我处理查询延迟,并且有一个要求,即我有几个包含数据的文件。我想将这些数据聚合到一个文件中。我使用了一种简单的技术,打开每个文件并收集全局文件中的所有数据。我对所有文件都这样做,但这需要时间。有没有一种方法可以将一个文件的末尾缝合到另一个文件,并创建一个包含所有数据的大文件。我想很多人以前可能都遇到过这个问题。有人能帮忙吗?
我想您目前正在手工打开和追加;否则,我不知道为什么聚合数据需要很长时间,尤其是因为您使用多个和几个来描述文件数量,这似乎表明这不是一个巨大的数字。
因此,我认为你只是在寻找一种自动为你打开和追加的方法。在这种情况下,您可以使用类似于下面的方法。请注意,这会创建输出文件或覆盖它(如果它已经存在),然后附加所有指定文件的内容。如果您想多次调用该方法并将其追加到同一个文件,而不是覆盖现有文件,那么另一种选择是使用带有true
的FileWriter作为其构造函数的第二个参数,以便它将追加到现有文件。
void aggregateFiles(List<String> fileNames, String outputFile) {
PrintWriter writer = null;
try {
writer = new PrintWriter(outputFile);
for(String fileName : fileNames) {
Path path = Paths.get(fileName);
String fileContents = new String(Files.readAllBytes(path));
writer.println(fileContents);
}
} catch(IOException e) {
// Handle IOException
} finally {
if(writer != null) writer.close();
}
}
List<String> files = new ArrayList<>();
files.add("f1.txt");
files.add("someDir/f2.txt");
files.add("f3.txt");
aggregateFiles(files, "output.txt");