2017-03-07 11 views
1

임은 두 문서의 doc_a 병합 제 3 문서에 doc_b하려고 라인 방식 두 문서를 병합 원하는 결과의 존재와 doc_c :

public static void mergeTrain(File src1, File src2, File dest) throws IOException{  

    Files.copy(src1.toPath(), dest.toPath()); 

    BufferedReader br = new BufferedReader(new FileReader(src2)); 
    BufferedWriter bw = new BufferedWriter(new FileWriter(dest,true)); 

    String line = new String("Platzhalter"); 
    try { 
     while(line != null){ 
      line = br.readLine(); 
      if (line !=null){    
       bw.append(line); 
       } 
      } 
     } 
    } catch (NumberFormatException e) { 
     e.printStackTrace(); 
    } 
    br.close(); 
    bw.close(); 
} 

로 :

content doc_a: line1 
       line2 

content doc_b: line3 
       line4 

content doc_c: line1 line3 
       line2 line4 

내 접근 방식이 유사하다 대신에 결과를 보겠습니다.

content doc_c: line1 
       line2 line3 line4 

원하는 결과를 얻으려면 어떻게해야합니까?

답변

1

현재 의 내용을 대상 파일 dest에 복사하는 중 파일 src2의 모든 행을 추가하면 그 결과를 얻을 수 있습니다. 너는 네가 실제로 원했던 것을 어떻게하면 좋을까?

이 방법에 대해 :

public static void mergeTrain(File src1, File src2, File dest) throws IOException {  

    BufferedReader br1 = new BufferedReader(new FileReader(src1)); 
    BufferedReader br2 = new BufferedReader(new FileReader(src2)); 
    BufferedWriter bw = new BufferedWriter(new FileWriter(dest,true)); 

    String line1; 
    String line2; 

    try { 
     while((line1 = br1.readLine()) != null 
      && (line2 = br2.readLine()) != null) {    
      bw.append(line1 + " " + line2); 
      bw.newLine(); 
     } 
    } catch (NumberFormatException e) { 
     e.printStackTrace(); 
    } 

    br1.close(); 
    br2.close(); 
    bw.close(); 
} 

내가 코드를 테스트하지 못했지만, 당신은 적어도 생각을해야한다. 두 파일의 행 수가 다른 경우 수행 할 작업에 대해 생각해야합니다.

+0

참고 : 'NumberFormatException'이 실제로 거기에 속해 있다고 생각하지 않습니다. 방금 원본 코드에서 복사했습니다. – domsson

1

두 입력 파일을 함께 구문 분석하는 것이 좋습니다. 두 파일의 길이가 다를 수도 있습니다.

public static void mergeTrain(File src1, File src2, File dest) throws IOException{  
BufferedReader br1 = new BufferedReader(new FileReader(src1)); 
BufferedReader br2 = new BufferedReader(new FileReader(src2)); 
BufferedWriter bw = new BufferedWriter(new FileWriter(dest,true)); 

String line1 = ""; 
String line2 = ""; 
try { 
    while(line1 != null || line2!=null){ 
     line1 = line1 !=null && br1.readLine(); 
     line2 = line2 != null && br2.readLine(); 
     if (line1 !=null) && (line2!=null){    
      bw.append(line1).append(" ").append(line2).append("\n"); 
      } 
     } else if (line1!=null) { 
      bw.append(line1).append("\n");   
     } else if (line2!=null) { 
      bw.append(line2).append("\n");    
     } 
    } 
    br1.close(); 
    br2.close(); 
    bw.close(); 


} catch (IOException e) { 
    e.printStackTrace(); 
} 
}