2014-08-27 82 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