合并以前缀开头的文件文件的内容

时间:2017-05-18 15:32:14

标签: java file bufferedreader

如何从Java中的文件夹合并以模式开头的文件。

我的文件如下:

UW110_file_1.dat

ROW1   DATA1  SOMESTUFF1
ROW2   DATA2  SOMESTUFF2

UW110_file_2.dat

ROW3   DATA3  SOMESTUFF3
ROW4   DATA4  SOMESTUFF4

UW110_file_2.hdr

ROW3   DATA3  SOMESTUFF3
ROW4   DATA4  SOMESTUFF4

我需要检查所有以UW110开头的扩展名为.dat的文件并合并它们。

在这种情况下,我将不得不创建一个文件,如下所示

UW110_file

ROW1   DATA1  SOMESTUFF1
ROW2   DATA2  SOMESTUFF2
ROW3   DATA3  SOMESTUFF3
ROW4   DATA4  SOMESTUFF4

1 个答案:

答案 0 :(得分:0)

创建一个File对象,其中包含文件所在的路径,让我们将其称为datFolder

public String getMergedFiles(File datFolder) {
    ArrayList<File> files = new ArrayList<>();
    files.addAll(Arrays.asList(datFolder.listFiles((f) -> f.getName().endsWith(".dat") && f.getName().startsWith("UW110"))));

    StringBuilder sb = new StringBuilder();

    for (File datFile : files) {
        InputStream is = new FileInputStream(datFile);
        BufferedReader buf = new BufferedReader(new InputStreamReader(is));

        String line = buf.readLine();
        while(line != null) {
            sb.append(line).append("\n");
            line = buf.readLine();
        }

        buf.close();
        is.close();
    }

    return sb.toString();
}

public void writeToFile(String input, File file) {
    PrintWriter out = new PrintWriter(file);
    try{
        out.println(input);
    }catch(Exception e){
        e.printStackTrace();
    }
    out.close();
}

// Somewhere in your code
File folder = new File("myFolder");
writeToFile(getMergedFiles(folder), new File("outputFile.dat"));

这会使用lambda,如果你不使用java 8,请查看它们的工作原理,应该很容易将它变成循环。

没有测试此代码,但我相信它应该可行。如果没有,可能需要快速修复。

您可以简单地将此方法返回的字符串写入文件,并且您应该拥有最终文件!

享受:)