合并以前缀开头的文件的文件内容
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 的字符串写入文件,您应该拥有最终文件!
尽情享受吧:)
如何从 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 的字符串写入文件,您应该拥有最终文件!
尽情享受吧:)