Java 文件系统操作:实践指南
文件系统操作是编程中的基础任务之一。在 Java 中,有一组强大而灵活的工具可用于此目的,从经典的 java.io 包到现代的 java.nio.file 包。在本文中,我们将通过实践示例来学习如何创建、读取、写入和删除文件,以及如何操作目录。
1. File 类:文件操作的基础
java.io.File 类是表示文件或目录路径的基础类。它允许检查文件是否存在、创建、重命名和删除文件系统对象。
创建和检查文件是否存在
import java.io.File;import java.io.IOException;
public class FileExample { public static void main(String[] args) { File file = new File("example.txt");
if (file.exists()) { System.out.println("文件存在: " + file.getAbsolutePath()); } else { try { if (file.createNewFile()) { System.out.println("文件已创建: " + file.getName()); } } catch (IOException e) { System.err.println("创建文件时出错: " + e.getMessage()); } }
// 检查属性 System.out.println("可读: " + file.canRead()); System.out.println("可写: " + file.canWrite()); System.out.println("大小: " + file.length() + " 字节"); }}操作目录
File dir = new File("my_directory");
if (dir.mkdir()) { System.out.println("目录已创建");}
// 创建嵌套目录File nestedDir = new File("parent/child/grandchild");if (nestedDir.mkdirs()) { System.out.println("嵌套目录已创建");}
// 获取文件列表String[] files = dir.list();for (String fileName : files) { System.out.println(fileName);}2. 通过 FileReader/FileWriter 读写文件
对于文本文件的操作,使用 FileReader 和 FileWriter 类非常方便。它们在字符级别工作并支持编码。
写入文件
import java.io.FileWriter;import java.io.IOException;
public class WriteExample { public static void main(String[] args) { try (FileWriter writer = new FileWriter("output.txt", true)) { writer.write("你好,世界!"); writer.write("这是第二行。"); writer.flush(); System.out.println("数据写入成功"); } catch (IOException e) { System.err.println("写入错误: " + e.getMessage()); } }}请注意:FileWriter 构造函数中的第二个参数 true 启用了追加模式。如果省略此参数,文件将被覆盖。
读取文件
import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;
public class ReadExample { public static void main(String[] args) { try (BufferedReader reader = new BufferedReader(new FileReader("output.txt"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { System.err.println("读取错误: " + e.getMessage()); } }}使用 BufferedReader 可以通过缓冲显著加快大文件的读取速度。
3. 现代方法:java.nio.file (NIO.2)
从 Java 7 开始,引入了 java.nio.file 包,它提供了更便捷、性能更高的工具,用于