Java 如何读取一个文件并生成多个文本输出文件

Java 如何读取一个文件并生成多个文本输出文件,java,io,Java,Io,我有一个文本文件,如下所示。我的问题是我想把我的txt文件读到每一段,并在java上为每一段生成单独的新文本文件 每次要使用其他编写器打印时都调用此函数 public class MySaver{ private PrintWriter innerWriter; public MySaver(Writer writer) { this.innerWriter = new PrintWriter(writer); } public voi

我有一个文本文件,如下所示。我的问题是我想把我的txt文件读到每一段,并在java上为每一段生成单独的新文本文件



每次要使用其他编写器打印时都调用此函数

    public class MySaver{
    private PrintWriter innerWriter;
    public MySaver(Writer writer)
    {
    this.innerWriter = new PrintWriter(writer);
    }

    public void save(String c) throws IOException {
        innerWriter.write(c);
    }

}

或者首先使用StringBuilder创建字符串并附加您想要的内容,然后打印其内容

逻辑是在
循环中创建一个新的
FileWriter
对象,每次看到
'>'
符号时。 我使用简单的int文件计数器命名多个输出文件,即

out0.txt、out1.txt、out2.txt等等

请参见以下工作代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileWriting{

    public static void main (String[] args){          
        BufferedReader br=null;
        BufferedWriter bw= null;

        String outFileName = "D:\\New folder\\out";
        try {
            String s;
            br = new BufferedReader(new FileReader("D:\\New folder\\casp10.txt"));
            int fileCounter = 0;

            while ((s=br.readLine())!= null) {
                if(s.contains(">")){
                    if(bw != null){
                        bw.close();
                    }
                    FileWriter fw = new FileWriter(outFileName + (fileCounter++) + ".txt");
                    bw = new BufferedWriter(fw);
                }
                bw.write(s +"\n");
            }
        } catch(IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if(br!=null) {
                    br.close();
                    bw.close();
                }
            } catch(IOException e) {
                e.printStackTrace();
            } 
        }
    }
}

有什么问题吗?当您到达边界时,创建一个指向不同文件的新写入器。您在写入下一行后写入>(在变量s中),因此您将根据输入对输出进行重新排序。因此,我应该对其进行哪些更改?如果我得到了确切的输出。我真的很感谢你的努力
    public class MySaver{
    private PrintWriter innerWriter;
    public MySaver(Writer writer)
    {
    this.innerWriter = new PrintWriter(writer);
    }

    public void save(String c) throws IOException {
        innerWriter.write(c);
    }

}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileWriting{

    public static void main (String[] args){          
        BufferedReader br=null;
        BufferedWriter bw= null;

        String outFileName = "D:\\New folder\\out";
        try {
            String s;
            br = new BufferedReader(new FileReader("D:\\New folder\\casp10.txt"));
            int fileCounter = 0;

            while ((s=br.readLine())!= null) {
                if(s.contains(">")){
                    if(bw != null){
                        bw.close();
                    }
                    FileWriter fw = new FileWriter(outFileName + (fileCounter++) + ".txt");
                    bw = new BufferedWriter(fw);
                }
                bw.write(s +"\n");
            }
        } catch(IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if(br!=null) {
                    br.close();
                    bw.close();
                }
            } catch(IOException e) {
                e.printStackTrace();
            } 
        }
    }
}