java如何拼接文件
使用 Files 类读取和写入文件
通过 Files.readAllBytes 读取文件内容,再通过 Files.write 追加到目标文件。适用于小文件,避免内存溢出。
Path file1 = Paths.get("file1.txt");
Path file2 = Paths.get("file2.txt");
Path output = Paths.get("output.txt");
byte[] content1 = Files.readAllBytes(file1);
byte[] content2 = Files.readAllBytes(file2);
Files.write(output, content1);
Files.write(output, content2, StandardOpenOption.APPEND);
使用 BufferedReader 和 BufferedWriter 逐行处理
适合大文件,逐行读取和写入,减少内存占用。
try (
BufferedReader reader1 = new BufferedReader(new FileReader("file1.txt"));
BufferedReader reader2 = new BufferedReader(new FileReader("file2.txt"));
BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))
) {
String line;
while ((line = reader1.readLine()) != null) {
writer.write(line);
writer.newLine();
}
while ((line = reader2.readLine()) != null) {
writer.write(line);
writer.newLine();
}
}
使用 FileInputStream 和 FileOutputStream 合并二进制文件
适用于二进制文件(如图片、视频),通过字节流直接拼接。
try (
FileInputStream fis1 = new FileInputStream("file1.dat");
FileInputStream fis2 = new FileInputStream("file2.dat");
FileOutputStream fos = new FileOutputStream("output.dat")
) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fis1.read(buffer)) != -1) {
fos.write(buffer, 0, bytesRead);
}
while ((bytesRead = fis2.read(buffer)) != -1) {
fos.write(buffer, 0, bytesRead);
}
}
使用 Apache Commons IO 简化操作
通过 FileUtils.writeByteArrayToFile 快速实现文件合并。

byte[] content1 = FileUtils.readFileToByteArray(new File("file1.txt"));
byte[] content2 = FileUtils.readFileToByteArray(new File("file2.txt"));
FileUtils.writeByteArrayToFile(new File("output.txt"), content1);
FileUtils.writeByteArrayToFile(new File("output.txt"), content2, true); // 追加模式
注意事项
- 大文件需使用流式处理(如
BufferedReader或FileInputStream),避免内存不足。 - 目标文件路径需提前检查是否存在,否则会覆盖原文件。
- 追加模式需显式指定
StandardOpenOption.APPEND或true参数。






