关于将多个文件拼接成单个文件

时间:2014-04-16 10:39:59

标签: java file

我处理查询延迟,并且要求我有几个包含数据的文件。我想将这些数据聚合到一个文件中。我使用一种天真的技术,我打开每个文件并收集全局文件中的所有数据。我为所有文件执行此操作,但这是时间。有没有一种方法可以将一个文件的末尾拼接到另一个文件的开头,并创建一个包含所有数据的大文件。我想很多人可能以前都遇到过这个问题。有人可以帮忙吗?

1 个答案:

答案 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");