如何在java中读取文件和写入两个不同的文件

如何在java中读取文件和写入两个不同的文件,java,file,Java,File,我有一个由问题和答案组成的大文件。我想把问题放在一个文件里,把答案放在另一个文件里。确定问题是否结束/答案是否开始的唯一方法是一个“?”。答案以“”结尾。请帮忙 注意:答案从同一行开始问题结束..但是下一个问题从另一行开始 以读取模式打开源文件,逐行读取 将每行数据按“?”进行拆分,通过“?”可以识别您的 问题结束了 现在你可以把问题写在一个文件里,回答在另一个文件里 重复此操作,直到到达文件末尾 更改相应的文件名并运行以下代码 import java.io.BufferedReader; i

我有一个由问题和答案组成的大文件。我想把问题放在一个文件里,把答案放在另一个文件里。确定问题是否结束/答案是否开始的唯一方法是一个“?”。答案以“”结尾。请帮忙

注意:答案从同一行开始问题结束..但是下一个问题从另一行开始

  • 以读取模式打开源文件,逐行读取

  • 将每行数据按“?”进行拆分,通过“?”可以识别您的 问题结束了

  • 现在你可以把问题写在一个文件里,回答在另一个文件里

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


更改相应的文件名并运行以下代码

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");
   }
}

是否要向我们显示实际文件和预期输出?首先解析文件,按
换行符拆分,这样您可以在
字符串[]
中获得所有问题-答案对。接下来用
拆分数组中的每个元素,这样您就可以得到单独的问题和答案。迭代所有
字符串[]
,并将其写入相应的文件。答案可以不止一行?告诉我们您尝试了什么?发布一些代码。给出输入文件的示例。我认为您在这里遗漏了一点<代码>注意:答案从同一行开始问题结束..但是下一个问题从另一行开始。
是的,必须先将其按“?”分割,数组需要使用0作为问题,1作为答案