如何比较和合并两个文本文件?

时间:2014-08-27 07:55:57

标签: java merge diff

我有两个文件说

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();
}

它会写入第一个文件中的所有行,当行匹配时,它会停止。

1 个答案:

答案 0 :(得分:0)

很简单:

  • 逐行读取您的第一个文件(您可以使用Scanner)。
  • 对于每一行,将其写入输出文件(您可以使用PrintWriter)。
  • 同时将该行存储在HashSet

  • 逐行阅读第二个文件。
  • 对于每一行,请检查该行是否在HashSet
  • 如果不是,请将其写入输出文件。

  • 关闭文件。