2012-12-09 4 views
0

123456abcdefg 두 개의 텍스트 파일을 각각의 행에 병합합니다. 내가 겪고있는 현상은 동일한 줄에 23456abcde 인 파일이 생성되었으므로 정확히 여기에 입력 한 것과 같습니다.BufferedWriter가 텍스트의 첫 번째 줄을 쓰지 않습니다.

내 질문이

  1. 이유는 첫 번째 파일은
  2. 를 작성하지에서 1입니다 왜 그들은 자신의 라인에 있지 않습니다.
  3. 왜 'fg'가 쓰여지지 않습니다. (7 줄의 텍스트 데이터가 있지만 6 글자 만 쓰면 7 글자는 영숫자가 전혀없이 "23456"을 출력하므로).

.

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

가 BR1의 첫 번째 줄을 소비 :

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"; 
} 
+0

'f '초기화는 어떻게됩니까? –

+0

static int f = 0; – Charles

+0

@Charles 각 writeLine 뒤에 newLine()을 사용하여 readLine이 제거하는 행 종료 문자를 다시 넣기를 원할 수도 있습니다. – xagyg

답변

3

문제가 있다는 것입니다. 첫 번째 문장은 이미 사실이므로 두 번째 문장은 평가하지 않습니다. 그 라인으로 아무 것도하지 않으므로 길을 잃었습니다.

+0

그 말이 맞습니다! 감사! – Charles

관련 문제