2014-08-27 57 views
-5

我有兩個文件說如何比較和合並兩個文本文件?

 
abc   
cdg 
sfh 
drt 
fgh 

和其他文件

 
ahj 
yuo 
jkl 
uio 
abc 
cdg 

我想比較這兩個文件,並得到輸出文件

 
abc 
cdg 
sfh 
drt 
fgh 
ahj 
yuo 
jkl 
uio 

這是我的代碼

public static void MergeFiles(final File priviousModifiedFilesList, final File currentModifiedFilesList, 
     final File ModifiedFilesList) { 
    FileWriter fstream = null; 
    out = null; 
    try { 
     fstream = new FileWriter(ModifiedFilesList, true); 
     out = new BufferedWriter(fstream); 
    } 
    catch (IOException e1) { 
     e1.printStackTrace(); 
    } 

    System.out.println("merging: " + priviousModifiedFilesList + "\n"); 
    System.out.println("merging: " + currentModifiedFilesList); 
    FileInputStream fis1; 
    FileInputStream fis2; 
    try { 
     fis1 = new FileInputStream(priviousModifiedFilesList); 
     BufferedReader bufferedReader1 = new BufferedReader(new InputStreamReader(fis1)); 

     fis2 = new FileInputStream(currentModifiedFilesList); 
     BufferedReader bufferedReader2 = new BufferedReader(new InputStreamReader(fis2)); 

     String Line1; 
     String Line2; 

     while (((Line1 = bufferedReader1.readLine()) != null)) { 

     while ((Line2 = bufferedReader2.readLine()) != null) { 

      if (Line1.equals(Line2)) { 
      out.write(Line1); 
      } 

      out.write(Line2); 
      out.newLine(); 
     } 
     out.write(Line1); 
     } 
     bufferedReader1.close(); 
     bufferedReader2.close(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
    out.close(); 
} 

它寫入第一個文件中的所有行,並在行匹配時停止。

+3

問題在哪裏?你試過什麼了? – Jens 2014-08-27 07:59:24

+0

Stack Overflow用於詢問您正在編寫的代碼的編程問題。目前,您已經撰寫了一系列要求,這對於承包商招聘網站更爲合適。請告訴我們您嘗試過什麼,以及您卡在哪裏。話雖如此,即使你的要求不清楚 - 你似乎想從合併的文件中刪除重複項? – 2014-08-27 07:59:41

+0

可能重複[在java中連接多個.txt文件](http://stackoverflow.com/questions/10675450/concatenating-a-number-of-txt-files-in-java) – 2014-08-27 07:59:47

回答

0

這很容易:

  • 閱讀你的行頭文件中的行(你可以使用一個Scanner)。
  • 對於每一行,將其寫入輸出文件(您可以使用PrintWriter)。
  • 還將行存儲在HashSet中。

  • 逐行讀取你的第二個文件中的行。
  • 對於每一行,檢查行是否在HashSet
  • 如果不是,則將其寫入輸出文件。

  • 關閉您的文件。
+0

這不適用於大文件。 – 2016-07-27 12:11:13