我正在努力实现以下目标。
假设我们有两个文件 - file1 和 file 2,内容如下
文件1:
header
d1
d2
文件2:
header
d3
d4
那么合并的文件应该是
输出文件:
header
d1
d2
d3
d4
请注意,我们正在跳过第二个文件的标题。我使用 Guava 在 Java 中编写了以下代码。
LinkedList<InputSupplier<BufferedReader>> listOfSuppliers =
new LinkedList<InputSupplier<BufferedReader>>();
boolean firstFile = true;
for (Path path : inputPaths) {
InputSupplier<BufferedReader> reader = newBufferedReaderSupplier(fs.open(path));
if (!firstFile) {
String ignored = reader.getInput().readLine();
LOGGER.info("Ignored header from the second file " + ignored);
}
listOfSuppliers.add(reader);
firstFile = false;
}
InputSupplier<Reader> combined = CharStreams.join(listOfSuppliers);
OutputSupplier<OutputStreamWriter> outputStream
= Files.newWriterSupplier(output, Charsets.UTF_8, false);
CharStreams.copy(combined, outputStream);
这段代码的问题是,当我们跳过标头时,输出文件没有来自第二个文件的内容。我认为 BufferedReader 正在做一些导致整个文件被忽略的事情。
可以知道如何解决这个问题吗?