我处理查询延迟,并且要求我有几个包含数据的文件。我想将这些数据聚合到一个文件中。我使用一种天真的技术,我打开每个文件并收集全局文件中的所有数据。我为所有文件执行此操作,但这是时间。有没有一种方法可以将一个文件的末尾拼接到另一个文件的开头,并创建一个包含所有数据的大文件。我想很多人可能以前都遇到过这个问题。有人可以帮忙吗?
答案 0 :(得分:0)
我想你现在正在开口并手工追加;否则我不知道为什么要花费很长时间来聚合数据,特别是因为你描述了使用多个和几个的文件数量,这似乎表明了它#39 ;不是一个庞大的数字。
因此,我认为您只是在寻找一种自动进入开场并为您追加的方法。在这种情况下,您可以使用类似于下面的方法。请注意,这会创建输出文件或覆盖它(如果已存在),然后附加所有指定文件的内容。如果你想多次调用该方法并附加到同一个文件而不是覆盖现有文件,另一种方法是使用FileWriter代替true
作为其构造函数的第二个参数,这样它就会附加到现有文件。
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");