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

Merge contents of file of files starting with a prefix

如何从 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

使用文件所在的路径创建一个 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,如果您不使用 java8,请查看它们的工作方式,应该很容易将它变成一个循环。

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

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

尽情享受吧:)