繁体   English   中英

如何在Java中读取文件并写入2个不同的文件

[英]How to read a file and write in 2 different files in java

我有一个包含问题和答案的大文件。 我想将问题放在一个文件中,然后在另一个文件中回答。确定问题是否结束/答案开始的唯一方法是“?”。 答案以“”结尾。 请帮助...

注意:答案始于同一行,问题结束。但是,下一个问题始于另一行。

  • 在读取模式下打开源文件。逐行读取每一行。

  • 用“?”分隔每行数据 通过它可以确定您的问题已结束。

  • 现在,您可以在一个文件中写问题,在另一文件中写答案。

  • 重复此操作,直到到达文件末尾

更改相应的文件名,然后运行以下代码。

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


public class Test {

    public static void main(String[] args) {
        File rFile = new File("QuestAndAnsFile.txt");
        BufferedReader in = null;
        BufferedWriter questFileWriter = null;
        BufferedWriter ansFileWriter = null;
        try
        {
            in = new BufferedReader(new FileReader(rFile));

            questFileWriter = new BufferedWriter(new FileWriter("questions.txt"));
            ansFileWriter = new BufferedWriter(new FileWriter("answers.txt"));

            while (in.ready()) 
            {
              String s = in.readLine();
              if(s.endsWith("?"))
              {
                  questFileWriter.write(s+"\n");
              }
              else
              {
                  ansFileWriter.write(s+"\n");
              }
            }

        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
        finally
        {
            try{
                if(in != null){  in.close(); }
                if(questFileWriter != null) { questFileWriter.close();}
                if(ansFileWriter != null) { ansFileWriter.close();}
            }
            catch(Exception ex){}
        }
    }
}

更新:

while (in.ready()) 
{
   String s = in.readLine();
   String[] qs = s.split("\\?");
   if(qs.length == 2)
   {
      //Assume that all line should contains question and ans
      questFileWriter.write(qs[0]+"\n");
      ansFileWriter.write(qs[1]+"\n");
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM