如何从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
答案 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,请查看它们的工作原理,应该很容易将它变成循环。
没有测试此代码,但我相信它应该可行。如果没有,可能需要快速修复。
您可以简单地将此方法返回的字符串写入文件,并且您应该拥有最终文件!
享受:)