描述:
- java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关
- File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
- 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
- File对象可以作为参数传递给流的构造器
1.常用构造器
1.1 public File(String pathname)
以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果
pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
绝对路径:是一个固定的路径,从盘符开始
相对路径:是相对于某个位置开始
1.2 public File(String parent,String child)
以parent为父路径,child为子路径创建File对象。
1.3 public File(File parent,String child)
根据一个父File对象和子文件路径创建File对象
2.路径分隔符
2.1 路径分隔符和系统有关:
- windows和DOS系统默认使用“\”来表示
- UNIX和URL使用“/”来表示
2.1.2 File类提供了一个常量:separator
public static final String separator。根据操作系统,动态的提供分隔符
举例:
File file1 = new File("E:\\atguigu\\info.txt");
File file2 = new File("E:" + File.separator + "atguigu" + File.separator + "info.txt");
File file3 = new File("E:/atguigu");
3.常用方法
3.1 File类的获取
方法名 | 出参 | 描述 |
---|---|---|
getAbsolutePath() | String | 获取绝对路径 |
getPath() | String | 获取路径 |
getName() | String | 获取名称 |
getParent() | String | 获取上层文件目录路径。若无,返回null |
length() | long | 获取文件长度(即:字节数,中文及中文符号占3个长度,英文字母及数字占1个长度),不能获取目录的长度。 |
lastModified() | long | 获取最后一次的修改时间,毫秒值 |
list() | String[] | 获取指定目录下的所有文件或者文件目录的名称数组 |
listFiles() | File[] | 获取指定目录下的所有文件或者文件目录的File数组 |
3.2 File类的重命名
方法名 | 入参 | 出参 | 描述 |
---|---|---|---|
renameTo | File | boolean | 把文件重命名为指定的文件路径 |
3.3 File类的判断
方法名 | 出参 | 描述 |
---|---|---|
isDirectory() | boolean | 判断是否是文件目录 |
isFile() | boolean | 判断是否是文件 |
exists() | boolean | 判断是否存在 |
canRead() | boolean | 判断是否可读 |
canWrite() | boolean | 判断是否可写 |
isHidden() | boolean | 判断是否隐藏 |
3.4 File类的创建
方法名 | 出参 | 描述 |
---|---|---|
createNewFile() | boolean | 创建文件 |
mkdir() | boolean | 创建文件目录 |
mkdirs() | boolean | 创建文件目录 |
方法区别:
createNewFile() :若文件存在,则不创建,返回false。
mkdir() :创建文件目录。如果此文件目录存在,就不创建了。
如果此文件目录的上层目录不存在,也不创建。
mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建。
注意事项:如果你创建文件或者文件目录没有写盘符路径,那么,默认在项目路径下。
代码举例:
File dir1 = new File("E:/IOTest/dir1");
if (!dir1.exists()) { // 如果E:/IOTest/dir1不存在,就创建为目录
dir1.mkdir();
}
// 创建以dir1为父目录,名为"dir2"的File对象
File dir2 = new File(dir1, "dir2");
if (!dir2.exists()) { // 如果还不存在,就创建为目录
dir2.mkdirs();
}
File dir4 = new File(dir1, "dir3/dir4");
if (!dir4.exists()) {
dir4.mkdirs();
}
// 创建以dir2为父目录,名为"test.txt"的File对象
File file = new File(dir2, "test.txt");
if (!file.exists()) { // 如果还不存在,就创建为文件
file.createNewFile();
}
3.5 File类的删除
方法名 | 出参 | 描述 |
---|---|---|
delete() | boolean | 删除文件或者文件夹 |
注意事项:
Java中的删除不走回收站。
要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录
练习
1.遍历指定目录所有文件名称,包括子文件目录中的文件。
1.1:并计算指定目录占用空间的大小
https://blog.csdn.net/xuchaoxin1375/article/details/111398349