java如何把一个文件
读取文件内容
使用 java.nio.file.Files 类的 readAllBytes 或 readAllLines 方法可以快速读取文件内容。readAllBytes 返回字节数组,适用于二进制文件;readAllLines 返回字符串列表,适用于文本文件。
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
// 读取为字节数组
byte[] bytes = Files.readAllBytes(Paths.get("path/to/file"));
// 读取为文本行
List<String> lines = Files.readAllLines(Paths.get("path/to/file"));
逐行读取文件
对于大文件,逐行读取可以避免内存不足的问题。使用 BufferedReader 包装 FileReader 实现高效逐行处理。
import java.io.BufferedReader;
import java.io.FileReader;
try (BufferedReader br = new BufferedReader(new FileReader("path/to/file"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
写入文件内容
通过 Files.write 方法可以直接将字节数组或字符串列表写入文件。支持覆盖或追加模式。
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
// 覆盖写入
Files.write(Paths.get("path/to/file"), "content".getBytes());
// 追加写入
Files.write(Paths.get("path/to/file"), "content".getBytes(),
StandardOpenOption.APPEND);
使用流处理大文件
对于大文件操作,结合 Files.lines 和流式处理可以高效完成任务。例如统计文件行数或过滤内容。
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Stream;
try (Stream<String> stream = Files.lines(Paths.get("path/to/file"))) {
long lineCount = stream.count();
System.out.println("Total lines: " + lineCount);
}
复制或移动文件
Files.copy 和 Files.move 方法提供文件复制和移动功能,支持替换已有文件或保留属性等选项。
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
// 复制文件
Files.copy(Paths.get("source.txt"), Paths.get("target.txt"),
StandardCopyOption.REPLACE_EXISTING);
// 移动文件
Files.move(Paths.get("source.txt"), Paths.get("target.txt"));






