实现合并函数
在这一步中,你将实现 merge
函数来合并输入文件的内容。
-
在 /home/labex/project
目录下打开 FileMerge.java
文件。
-
找到 merge
函数,并用以下实现替换现有代码:
public static void merge(String[] sourcePath, String outPath) throws IOException {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(outPath))) {
BufferedReader[] readers = new BufferedReader[sourcePath.length];
String[] currentLines = new String[sourcePath.length];
boolean[] fileEmpty = new boolean[sourcePath.length];
// 为每个源文件打开读取器
for (int i = 0; i < sourcePath.length; i++) {
readers[i] = new BufferedReader(new FileReader(sourcePath[i]));
currentLines[i] = readers[i].readLine();
fileEmpty[i] = (currentLines[i] == null);
}
// 合并每个文件的行
boolean allFilesEmpty = false;
while (!allFilesEmpty) {
allFilesEmpty = true;
for (int i = 0; i < sourcePath.length; i++) {
if (!fileEmpty[i]) {
writer.write(currentLines[i]);
writer.newLine();
currentLines[i] = readers[i].readLine();
fileEmpty[i] = (currentLines[i] == null);
allFilesEmpty = false;
}
}
}
// 关闭读取器
for (BufferedReader reader : readers) {
reader.close();
}
}
}
此实现为每个输入文件打开一个 BufferedReader
,从每个文件中读取行,并以交替的方式将这些行写入输出文件。如果一个文件没有更多行,则跳过该文件,直到所有文件的所有行都已写入输出文件。