2017-08-28 7 views
0

私は2つの.txtファイル(file1.txtとfile2.txt)を持っています。これらのファイルには、いくつかの行があります。私の意図は、これら2つのファイルの内容を別のファイル(file3.txt)にマージすることです。私のコードは以下の通りです:2つのファイル(.txt)を別のファイル(.txt)にマージしようとすると、コードが機能しないのはなぜですか?

public static void main(String[] args) { 

    try { 
     PrintWriter pw = new PrintWriter("file3.txt"); 
     BufferedReader br1 = new BufferedReader(new FileReader("file1.txt")); 
     BufferedReader br2 = new BufferedReader(new FileReader("file2.txt")); 


     String line = br1.readLine(); 
     while(line!=null){ 
      pw.println(line); 
      br1.readLine(); 
     } 

     line = br2.readLine(); 
     while (line!=null) { 
      pw.println(line); 
      br2.readLine(); 

     } 

     pw.flush(); 
     pw.close(); 

     br1.close(); 
     br2.close(); 

    } catch (FileNotFoundException ex) { 
     Logger.getLogger(JavaIoProject.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (IOException ex) { 
     Logger.getLogger(JavaIoProject.class.getName()).log(Level.SEVERE, null, ex); 
    }  
} 

コンパイル時にエラーはありません。実行した後、私は期待される出力を(file3.txt)の中に見ようとしても、何も表示されず、マウスポインタが処理に変わります。なぜこれが起こるのですか?私が追加するのを忘れていた欠けている部分や、私は編集すべき部分と理由は何か..あなたの助けが必要です..ありがとう。

+4

「br1.readLine();」とは何か、_by自体? –

+0

あなたはそれらを一緒に追加していないので、あなたはそれを開いて読んでいるだけです。 – Siyavash

+0

次の行を返すと思います。ではない? – Sadhon

答えて

1

たくさん。 メソッドを作成し、それをfilenameごとに呼び出すことができます。

PrintWriter pw = new PrintWriter("file3.txt"); 
    readAndWrite(pw, "file1.txt"); 
    readAndWrite(pw, "file2.txt"); 

    pw.flush(); 
    pw.close(); 

これはreadAndWrite方法の定義です。また、ループを修正します。

private static void readAndWrite(PrintWriter pw, String filename) throws FileNotFoundException, IOException { 
    BufferedReader br = new BufferedReader(new FileReader(filename)); 
    String line = br.readLine(); 
    while (line!=null) { 
     pw.println(line); 
     line =br.readLine();  
    } 
    br.close(); 
} 
2

ループ内の行の値を再割り当てして無限ループになるのを忘れてしまいます。

while (line!=null) { 
     pw.println(line); 
     line =br2.readLine(); 

    } 
1

あなたは割り当てを欠落していた:whileループの両方

変更。だから、このようなことを試すことができます。あなたの実装で複数回繰り返されているコードの

String line =""; 
while((line=br1.readLine())!=null){ 
     pw.println(line); 
} 

line = ""; 
while ((line=br2.readLine())!=null) { 
    pw.println(line); 
} 
関連する問題