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 等。