目录
文件系统和IO流
一:文件的认知
认识文件
树型结构组织和⽬录:
文件路径(Path):
文件形式:
二:File的方法
File的概述:
File的属性
File的构造方法
File常用的get系列方法
File常用的增,删方法
File常用的生成目录的系列方法
一:文件的认知
我们先来认识狭义上的文件(file)。针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时,往往不是保存成⼀个整体,而是独立成⼀个个的单位进行保存,这个独立的单位就被抽象成⽂件的概念,就类似办公桌上的⼀份份真实的文件⼀般。文件除了有数据内容之外,还有一部分信息,例如文件名、文件类型、文件大小等并不作为文件的数
据而存在,我们把这部分信息可以视为文件的元信息.
同时,随着文件越来越多,对文件的系统管理也被提上了日程,如何进行文件的组织呢,⼀种合乎自然的想法出现了,就是按照层级结构进行组织也就是我们数据结构中学习过的树形结构。这样,
⼀种专门用来存放管理信息的特殊文件诞生了,也就是我们平时所谓文件夹(folder)或者目录
(directory)的概念。
如何在⽂件系统中如何定位我们的⼀个唯⼀的文件就成为当前要解决的问题,但这难不倒计算机科学家
二:File的方法
主要涉及文件的元信息、路径的操作,Java中通过 java.io.File 类来对⼀个文件(包括目录)进行抽象的描述。注意,有File对象,并不代表真实存在该文件,我们先来看看File 类中的常见属性、构造方法和方法
修饰符及类型 | 属性 | 说明 |
static String | pathSeparator | 依赖于系统的路径分隔符,String 类型的表⽰ |
static char | pathSeparator | 依赖于系统的路径分隔符,char类 型的表⽰ |
签名 | 说明 |
File(File parent, String child) | 根据⽗⽬录+孩⼦⽂件路径,创建⼀个新的File实例 |
File(String pathname) | 根据⽂件路径创建⼀个新的File实例,路径可以是绝 对路径或者相对路径 |
File(String parent, String child) | 根据⽗⽬录+孩⼦⽂件路径,创建⼀个新的File实 例,⽗⽬录⽤路径表⽰ |
修饰符及返回值类型 | 方法签名 | 说明 |
String | getParent() | 返回File对象的⽗⽬录⽂件路径 |
String | getName() | 返回FIle对象的纯文件名称 |
String | getPath() | 返回File对象的⽂件路径 |
String | getAbsolutePath() | 返回File对象的绝对路径 |
String | getCanonicalPath() | 返回File对象的修饰过的绝对路径 |
import java.io.File;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
File file = new File("..\\hello-world.txt"); // 并不要求该⽂件真实存
System.out.println(file.getParent());
System.out.println(file.getName());
System.out.println(file.getPath());
System.out.println(file.getAbsolutePath());
System.out.println(file.getCanonicalPath());
}
}
代码结果:
boolean | exists() | 判断File对象描述的⽂件是否真实存在 |
boolean | isDirectory() | 判断File对象代表的⽂件是否是⼀ 个⽬录 |
boolean | isFile() | 判断File对象代表的⽂件是否是⼀ 个普通⽂件 |
boolean | createNewFile() | 根据File对象,⾃动创建⼀个空⽂ 件。成功创建后返回true |
boolean | delete() | 根据File对象,删除该⽂件。成功 删除后返回true |
void | deleteOnExit() | 根据File对象,标注⽂件将被删 除,删除动作会到JVM运⾏结束时 才会进⾏ |
import java.io.File;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
File file = new File("hello-world.txt"); // 要求该⽂件不存在,才能看
System.out.println(file.exists()); //false
System.out.println(file.isDirectory()); //false
System.out.println(file.isFile()); //false
System.out.println(file.createNewFile()); //true
System.out.println(file.exists()); //true
System.out.println(file.isDirectory()); //false
System.out.println(file.isFile()); //true
System.out.println(file.createNewFile()); //false
System.out.println(file.delete()); //true
System.out.println(file.exists()); //false
}
}
String[] | list() | 返回File对象代表的⽬录下的所有 ⽂件名 |
File[] | listFiles() | 返回File对象代表的⽬录下的所有 ⽂件,以File对象表⽰ |
boolean | mkdir() | 创建File对象代表的⽬录 |
boolean | mkdirs() | 创建File对象代表的⽬录,如果必 要,会创建中间⽬录 |
boolean | renameTo(File dest) | 进⾏⽂件改名,也可以视为我们平 时的剪切、粘贴操作 |
boolean | canRead() | 判断⽤⼾是否对⽂件有可读权限 |
boolean | canWrite() | 判断⽤⼾是否对⽂件有可写权限 |
import java.io.File;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
File dir = new File("some-parent\\some-dir"); // some-parent 和 so
System.out.println(dir.isDirectory()); //true
System.out.println(dir.isFile()); //false
System.out.println(dir.mkdirs()); //true
System.out.println(dir.isDirectory()); //false
System.out.println(dir.isFile()); //false
}
}
如果觉得文章不错,期待你的一键三连哦,你个鼓励是我创作的动力之源,让我们一起加油,顶峰相见!!!