文件读写
Java 提供了两代 IO API:传统的 java.io 和现代的 java.nio.file(NIO.2,Java 7+)。入门推荐直接使用 NIO.2 的 Files 工具类,简单可靠。
现代写法:Files 工具类
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
Path path = Path.of("data.txt");
// 写入整个文件(覆盖)
Files.writeString(path, "Hello, Java!");
// 读取整个文件
String content = Files.readString(path);
System.out.println(content);
// 按行读取
List<String> lines = Files.readAllLines(path);
for (String line : lines) {
System.out.println(line);
}
// 追加内容(不覆盖)
Files.writeString(path, "\n新的一行",
java.nio.file.StandardOpenOption.APPEND);
常用辅助方法:
Files.exists(path); // 文件是否存在
Files.createFile(path); // 创建文件
Files.delete(path); // 删除文件
Files.copy(src, dest); // 复制
Files.move(src, dest); // 移动/重命名
传统写法:缓冲流
大文件或需要逐行处理时,使用缓冲字符流:
import java.io.*;
// 读取
try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
// 写入
try (BufferedWriter writer = new BufferedWriter(new FileWriter("out.txt", true))) {
writer.write("一行内容");
writer.newLine();
}
FileWriter 第二个参数为 true 表示追加模式。try-with-resources 会在结束时自动关闭流。
文件与目录信息
import java.io.File;
File file = new File("data.txt");
file.exists(); // 是否存在
file.isFile(); // 是文件
file.isDirectory(); // 是目录
file.length(); // 文件大小(字节)
file.getName(); // 文件名
file.getAbsolutePath(); // 绝对路径
File dir = new File(".");
String[] names = dir.list(); // 列出目录下所有名称
选择建议
- 小文件整体读写 →
Files.readString/Files.writeString,一行搞定 - 大文件逐行处理 →
BufferedReader/BufferedWriter - 二进制文件(图片、音视频)→
Files.readAllBytes或字节流FileInputStream