0

2 つのテキスト ファイルをそれぞれ独自の行にマージしてい123456ますabcdefg。私が経験している現象は23456abcde、同じ行に作成されたファイルであるため、ここで入力したとおりです。

私の質問は

  1. 1最初のファイルからが書き込まれないのはなぜですか
  2. なぜ彼らは自分のラインにいないのですか。
  3. なぜ「fg」が書かれていないのですか?(テキスト データは 7 行ですが、書き込みは 6 回のみです。これは、7 回の書き込みで英数字がまったく含まれていない「23456」が出力されるためです)。

.

public static String mergeRecords(String in1, String in2, String out) {
    BufferedReader br1 = null;
    BufferedReader br2 = null;
    BufferedWriter bw1 = null;

    try{
        FileReader fr1 = new FileReader(in1);
        FileReader fr2 = new FileReader(in2);
        br1 = new BufferedReader(fr1);
        br2 = new BufferedReader(fr2);
        bw1 = new BufferedWriter(new FileWriter(out));
        ////File Writing
        while(!(br1.readLine()==null)||(br2.readLine()==null)){
            //alternating between the two filles
            if((f%2)==0){
                bw1.write(br1.read());
                bw1.write(br1.readLine());
                bw1.write(br1.readLine());
                bw1.write(br1.readLine());
                bw1.write(br1.readLine());
                bw1.write(br1.readLine());
            }
            else{
                bw1.write(br2.read());
                bw1.write(br2.readLine());
                bw1.write(br2.readLine());
                bw1.write(br2.readLine());
                bw1.write(br2.readLine());
                bw1.write(br2.readLine());
            }
            /////
            //File ALternator Value
            f++;
        }
        bw1.close();
    }
    catch(IOException iox){
    }
    return "'mergeRecords' not yet implemented";
}
4

1 に答える 1

4

問題はそれです:

        while(!(br1.readLine()==null)||(br2.readLine()==null)){

br1 の最初の行を消費します。最初のステートメントが既に真であるため、2 番目のステートメントは評価されません。その行で何もしないので、失われます。

于 2012-12-09T06:54:51.590 に答える