java - 在目录java中分割多个文本文件

标签 java file split

我试图沿着“客户声明结束”行拆分目录中的文本文件,并将结果文件存储到临时目录中。分割仅发生在第一个文件,而另一个文件被忽略,我的代码有什么问题。我期望 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/

相关文章:

java - 在 Netbeans 7 中更改 JAR 文件的目标文件夹

Java Web 服务并发问题

linux - Linux上的bash,删除具有特定文件扩展名的文件

java - 在 Java 中将一个文件 append 到另一个文件 - 为什么我的代码会覆盖?

string - Scala中如何将字符串拆分为字符

paypal - 在两个人/帐户之间拆分付款?

java - 使用 hibernate/spring 一次加载所有惰性集合

java - 通过java从.jar文件内部访问类

python - 在python中以制表符分隔格式分割文本,将其添加到列表并将其写入文件......有更好的方法吗?

java - StackOverflowError - 向堆中添加一个值