Java 中的 File
类详解
在 Java 中,File
类是用于与文件和目录进行交互的核心类。通过 File
类,你可以进行文件的创建、删除、重命名、路径获取等操作。File
类并不直接用于文件内容的读写,而是用来表示文件和目录的路径,它允许你对文件系统进行操作。
File
类位于 java.io
包下。
✅ 1. File
类的基本构造函数
File
类有多个构造方法,主要有以下几种:
1.1 使用文件路径创建 File
对象
1
| File file = new File("path/to/file.txt");
|
- 解释:通过指定文件的路径(可以是绝对路径或相对路径)来创建
File
对象。
1.2 使用文件路径和父目录创建 File
对象
1
| File file = new File("path/to", "file.txt");
|
- 解释:第一个参数是父目录路径,第二个参数是文件名。
1.3 使用 URI
创建 File
对象
1
| File file = new File(new URI("file:///path/to/file.txt"));
|
✅ 2. File
类的常用方法
2.1 获取文件或目录的路径
getAbsolutePath()
:返回文件或目录的绝对路径。
1 2
| File file = new File("file.txt"); System.out.println(file.getAbsolutePath());
|
getCanonicalPath()
:返回文件的规范路径。与 getAbsolutePath()
的区别在于,它会去除多余的路径(如 .
和 ..
)。
1 2
| File file = new File("file.txt"); System.out.println(file.getCanonicalPath());
|
1
| System.out.println(file.getName());
|
1
| System.out.println(file.getParent());
|
2.2 文件存在性检查
1 2
| File file = new File("file.txt"); System.out.println(file.exists());
|
1
| System.out.println(file.isFile());
|
1 2
| File dir = new File("path/to/dir"); System.out.println(dir.isDirectory());
|
1
| System.out.println(file.canRead());
|
1
| System.out.println(file.canWrite());
|
1
| System.out.println(file.canExecute());
|
2.3 文件/目录操作
createNewFile()
:创建一个新文件。如果文件已经存在,返回 false
。
1 2 3 4 5 6
| File file = new File("newfile.txt"); if (file.createNewFile()) { System.out.println("文件创建成功!"); } else { System.out.println("文件已存在!"); }
|
mkdir()
:创建一个单一的目录。如果目录已存在,返回 false
。
1 2 3 4 5 6
| File dir = new File("newdir"); if (dir.mkdir()) { System.out.println("目录创建成功!"); } else { System.out.println("目录已存在!"); }
|
1 2 3 4 5 6
| File dir = new File("parent/newdir"); if (dir.mkdirs()) { System.out.println("目录创建成功!"); } else { System.out.println("目录已存在!"); }
|
delete()
:删除文件或目录。若是目录,则必须为空才能删除。
1 2 3 4 5 6
| File file = new File("file.txt"); if (file.delete()) { System.out.println("文件删除成功!"); } else { System.out.println("文件删除失败!"); }
|
renameTo(File dest)
:将文件或目录重命名或移动到另一个路径。
1 2 3 4 5 6 7
| File oldFile = new File("oldfile.txt"); File newFile = new File("newfile.txt"); if (oldFile.renameTo(newFile)) { System.out.println("文件重命名成功!"); } else { System.out.println("文件重命名失败!"); }
|
2.4 获取文件信息
length()
:返回文件的大小(以字节为单位)。
1
| System.out.println(file.length());
|
lastModified()
:返回文件最后修改的时间(以毫秒为单位)。
1
| System.out.println(file.lastModified());
|
1 2 3 4 5
| File dir = new File("path/to/dir"); String[] files = dir.list(); for (String file : files) { System.out.println(file); }
|
listFiles()
:列出目录中的所有文件和目录,返回 File
数组。
1 2 3 4 5
| File dir = new File("path/to/dir"); File[] files = dir.listFiles(); for (File f : files) { System.out.println(f.getName()); }
|
2.5 判断文件权限
setReadable(boolean readable)
:设置文件是否可读。
setWritable(boolean writable)
:设置文件是否可写。
setExecutable(boolean executable)
:设置文件是否可执行。
1 2 3
| file.setReadable(true); file.setWritable(true); file.setExecutable(true);
|
✅ 3. File 类与其他 I/O 类的区别
File
类主要用于对文件系统进行操作(如创建、删除、查询文件),而对于文件内容的读取和写入,我们通常使用其他 I/O 类,如 FileInputStream
、FileOutputStream
、BufferedReader
、BufferedWriter
等。
✅ 4. 总结
File
类 用于操作文件和目录,但不处理文件的内容。
- 通过
File
类,可以检查文件的存在性、获取文件信息、创建文件/目录、删除文件、重命名文件等。
File
类操作通常涉及与文件系统进行交互,因此它是 java.io
中最基本的类之一。
- 文件内容的读写需要结合使用其他 I/O 类,如
FileInputStream
、FileOutputStream
等。