我试图沿着“客户声明结束”行拆分目录中的文本文件,并将结果文件存储到临时目录中。分割仅发生在第一个文件,而另一个文件被忽略,我的代码有什么问题。我期望 for 循环会吞没目录中的所有文件?这是我的代码。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/**
*
* @author Administrator
*/
public class SplitFiles {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
File f = new File("D:/statements/");
String[] filenames = f.list();
File[] texts = f.listFiles();
String lines = "";
for (int m = 0; m < filenames.length; m++) {
try {
int count = 0;
FileInputStream fs = new FileInputStream("D:/statements/" + filenames[m]);
BufferedReader br = new BufferedReader(new InputStreamReader(fs));
FileOutputStream fos = new FileOutputStream("D:/DFCU Statements/statement" + count + ".RPT");
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
while ((lines = br.readLine()) != null) {
String mine = lines.trim();
if (mine.startsWith("END OF CUSTOMER STATEMENT")) {
bw.close();
count++;
fos = new FileOutputStream("D:/DFCU Statements/statement" + count + ".RPT");
bw = new BufferedWriter(new OutputStreamWriter(fos));
continue;
}
if (mine.isEmpty()) {
continue;
} else {
bw.write(lines);
bw.newLine();
bw.flush();
}
}
fos.close();
fs.close();
br.close();
bw.close();
} catch (Exception ag) {
System.out.println(ag);
}
}
}
}
最佳答案
我认为你应该首先这样做(可能会有更多错误)
int count = 0;
for (int m = 0; m < filenames.length; m++) {
...
更新此外,删除您的 count++ 并将其放置在每个文件创建之后
FileOutputStream fos = new FileOutputStream("D:/DFCU Statements/statement" + count + ".RPT");
count++;
然后它将按预期工作
关于java - 在目录java中分割多个文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13913310/