Java 文件系统操作:从 File 到 NIO
文件系统操作是 Java 开发中的基础任务之一。无论是读取配置文件、写入日志还是处理用户数据,正确与文件和目录交互的能力是每位 Java 开发者必备的技能。本文将详细讲解文件系统操作的主要类和方法,从经典的 java.io.File 到现代的 java.nio.file。
File 类:文件和文件夹的基本操作
java.io.File 类自 Java 第一个版本就已存在,提供了路径、文件和目录操作的基本功能。它不直接读写数据,但支持文件系统管理操作。
创建 File 对象并检查存在性:
import java.io.File;
public class FileExample { public static void main(String[] args) { File file = new File("example.txt"); File dir = new File("myFolder");
System.out.println("文件存在:" + file.exists()); System.out.println("这是目录:" + dir.isDirectory()); }}创建文件和目录:
File newFile = new File("newFile.txt");if (newFile.createNewFile()) { System.out.println("文件已创建:" + newFile.getName());} else { System.out.println("文件已存在");}
File newDir = new File("newDirectory");if (newDir.mkdir()) { System.out.println("文件夹已创建");}
// 创建嵌套目录File nestedDir = new File("parent/child/grandchild");if (nestedDir.mkdirs()) { System.out.println("嵌套文件夹已创建");}获取文件信息:
File infoFile = new File("example.txt");System.out.println("绝对路径:" + infoFile.getAbsolutePath());System.out.println("大小:" + infoFile.length() + " 字节");System.out.println("最后修改时间:" + infoFile.lastModified());System.out.println("父目录:" + infoFile.getParent());删除和重命名:
File fileToDelete = new File("temp.txt");if (fileToDelete.delete()) { System.out.println("文件已删除");}
File oldFile = new File("old.txt");File newFile = new File("new.txt");if (oldFile.renameTo(newFile)) { System.out.println("文件已重命名");}文件读写:经典 I/O 流
直接读写数据使用 I/O 流。主要类包括:用于字节数据的 FileInputStream、FileOutputStream,以及用于文本数据的 FileReader、FileWriter。
使用 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")) { writer.write("你好,世界!"); writer.write("这是第二行。"); System.out.println("写入成功"); } catch (IOException e) { System.err.println("写入错误:" + e.getMessage()); } }}使用 FileReader 和 BufferedReader 读取文本文件:
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);