2017-03-07 26 views
1

进出口试图合并两个文件DOC_A和doc_b到第三个文件,说doc_c与期望的结果是:合并两个文件面向行

content doc_a: line1 
       line2 

content doc_b: line3 
       line4 

content doc_c: line1 line3 
       line2 line4 

我的做法与此类似:

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_c: line1 
       line2 line3 line4 

我该如何选择我想要的结果?

回答

1

您目前正在将目录src1的内容复制到目标文件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(); 
} 
}