File 类
# 简介
文件是计算机系统中非常重要的存储方式。Java提供了File
对象供开发人员进行文件相关的操作
构建File
对象时,需要在构造参数处传入文件的路径,如:
File f = new File("C:\\Windows\\notepad.exe");
1
# 注意
在Windows系统中,我们采用\
作为路径分隔符。
在Linux系统中,我们采用/
作为路径分隔符。
.
用于表示当前目录,..
用于表示上级目录。
# 路径的表达形式
File
对象提供了三种路径的表达形式
getPath()
— 返回构建方法中传入的路径getAbsolutePath()
— 返回绝对路径getCanonicalPath()
— 返回规范路径
# 文件与目录
File
对象可以表示文件,也能表示目录。即使传入的路径并不存在,对象也不会报错,开发者可以使用isFile()
和isDirectory()
,判断该File
是否是一个存在的文件或目录。
除此之外,还能调用:
boolean canRead()
: 是否可读boolean canWrite()
: 是否可写boolean canExecute()
: 是否可执行long length()
: 文件的字节大小
# 创建和删除
如果File
表示为一个文件时,可以通过createNewFile()
创建一个新的文件,用delete()
即可删除。
File file = new File("/path/to/file");
if (file.createNewFile()) {
// 文件创建成功:
// TODO:
if (file.delete()) {
// 删除文件成功:
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 遍历文件和目录
当File对象表示一个目录时,可以使用list()
和listFiles()
列出目录下的文件和子目录名。listFiles()
提供了一系列重载方法,可以过滤不想要的文件和目录:
public class Main {
public static void main(String[] args) throws IOException {
File f = new File("C:\\Windows");
File[] fs1 = f.listFiles(); // 列出所有文件和子目录
printFiles(fs1);
File[] fs2 = f.listFiles(new FilenameFilter() { // 仅列出.exe文件
public boolean accept(File dir, String name) {
return name.endsWith(".exe"); // 返回true表示接受该文件
}
});
printFiles(fs2);
}
static void printFiles(File[] files) {
System.out.println("==========");
if (files != null) {
for (File f : files) {
System.out.println(f);
}
}
System.out.println("==========");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
和文件操作类似,File对象如果表示一个目录,可以通过以下方法创建和删除目录:
boolean mkdir()
:创建当前File对象表示的目录;boolean mkdirs()
:创建当前File对象表示的目录,并在必要时将不存在的父目录也创建出来;boolean delete()
:删除当前File对象表示的目录,当前目录必须为空才能删除成功。