BufferedWriter не записывает первую строку текста

Я объединяю два текстовых файла с 123456 и abcdefg в отдельных строках соответственно. Феномен, который я испытываю, - это созданный файл, который находится 23456abcde в той же строке, точно так же, как я напечатал его здесь.

мой вопрос

  1. почему 1 из первого файла не записывается
  2. почему они не на своей линии.
  3. почему не пишется 'fg'. (семь строк текстовых данных, но только шесть записей, потому что семь записей выведут «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";
}

person Charles    schedule 09.12.2012    source источник
comment
@Charles Вы, вероятно, захотите выполнить newLine() после каждой writeLine, чтобы вернуть символы завершения строки, которые удаляет readLine.   -  person xagyg    schedule 09.12.2012


Ответы (1)


Проблема в том, что:

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

потребляет первую строку br1. Он не оценивает второе утверждение, потому что первое уже верно. Вы никогда ничего не делаете с этой строкой, поэтому она потеряна.

person Diego Basch    schedule 09.12.2012