如何在Java中逐行将两个文本文件数据写入第三个文件?

我从不同的路径读取两个文件,并且在读取时无法在循环中写入第二个文件内容,它迫使我在下面的程序中初始化rt变量。请帮助我如何修复它以获得预期的输出。提前致谢!!


import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;


public class ReadingFiles 

{


    public static void main(String[] args) throws IOException 

    {

        String inp = "location\\first.txt";

        String two = "location\\second.txt";

        BufferedReader br = new BufferedReader(new FileReader(inp));

        BufferedReader br2 = new BufferedReader(new FileReader(two));


        String st,rt;

        BufferedWriter bw = new BufferedWriter(new FileWriter("location"));

        while((st=br.readLine())!= null || (rt=br2.readLine())!= null )

        {

            bw.write(st);

            bw.newLine();

            /*bw.write(rt);

            bw.newLine();

            System.out.println(rt);*/

            //instance variable rt of type String is forcing me to initialize like 

            //for local variable and throwing nullpointer exception instead of fetching

            //second file contents

        }

        bw.close();

    }


}

请在上面找到我的程序,我正在尝试将两个文本文件内容写入第三个文件。以及下面给出的示例输入和输出


input

in file-1   a1a1a1   

            b2b2b2

            c3c3c3


in file-2   d1d1d1

            e2e2e2

            f3f3f3


 output 


  a1a1a1

  d1d1d1

  b2b2b2

  e2e2e2

  c3c3c3

  f3f3f3



慕码人2483693
浏览 76回答 3
3回答

青春有我

您在代码中犯了几个错误,并且还有更好的方法来实现代码。但是对于您的轻描淡写,我将更新您现有的代码。1) st 和 rt 应初始化。因为当第一次 st 初始化时,rt 尚未初始化。2) ||应该是 &&.因为您需要循环直到所有文件都读完为止。3)应该检查st&rt是否为空。请检查以下代码。public class ReadingFiles {public static void main(String[] args) throws IOException {    String inp = "first.txt";    String two = "second.txt";    BufferedReader br = new BufferedReader(new FileReader(inp));    BufferedReader br2 = new BufferedReader(new FileReader(two));    String st,rt="";    BufferedWriter bw = new BufferedWriter(new FileWriter("location"));    boolean isCompleted = false;    while( !isCompleted)    {        st=br.readLine() ;        bw.write(st==null?"":st);        bw.newLine();        rt=br2.readLine();        bw.write(rt==null?"":rt);        bw.newLine();        isCompleted = (st==null && rt == null) ? true : false ;    }    bw.close();}}

胡说叔叔

你没有关闭你的读者,我更喜欢过度明确的关闭。然后,在无限循环中读取各自文件中的每一行。在写入输出缓冲区之前,从每个文件单独测试 ,并在用尽两个输入后再次终止循环。像这样,try-with-resourcesnulltry (BufferedReader br = new BufferedReader(new FileReader(inp));        BufferedReader br2 = new BufferedReader(new FileReader(two));        BufferedWriter bw = new BufferedWriter(new FileWriter("location"))) {    while (true) {        String st = br.readLine();        if (st != null) {            bw.write(st);            bw.newLine();        }        String rt = br2.readLine();        if (rt != null) {            bw.write(rt);            bw.newLine();        }        if (st == null && rt == null) {            break;        }    }} catch (IOException e) {    e.printStackTrace();}

江户川乱折腾

我会使用无限循环而不是在我的循环内单独管理循环退出条件。dowhilewhileif为什么?因为标头中的第二个条件语句可能不会执行,因为它是 or (),并且当第一个语句是时,编译器会忽略条件语句的其余部分,因此永远不会启动。这就是为什么编译器强制您初始化的原因。while||truertrt
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java