如何比较两个文本文件的内容和另一个文本文件中的输出? text1 - text2

时间:2014-09-18 14:49:17

标签: java collections hashmap comparison fileoutputstream

我想做1.txt减去2.txt的内容并输出3.txt中的内容。此外,如果2.txt有剩余额外的行,则将其输出为4.txt。

文本文件的内容不是逐行排序的,所以基本上代码只需删除匹配的行,如下所示:

1.txt包含:

example1
example2
example3

2.txt包含:

example2
example3
example4

3.txt将包含:

example1

4.txt将包含:

example4

1 个答案:

答案 0 :(得分:1)

使用Guava

Set<String> lines1 = 
    new HashSet<>(Files.readLines(new File("1.txt"), Charsets.UTF_8));
Set<String> lines2 = 
    new HashSet<>(Files.readLines(new File("2.txt"), Charsets.UTF_8));
Set<String> minus1 = Sets.difference(lines1, lines2);
Set<String> minus2 = Sets.difference(lines2, lines1);
Files.asCharSink(new File("3.txt"), Charsets.UTF_8).writeLines(minus1);
Files.asCharSink(new File("4.txt"), Charsets.UTF_8).writeLines(minus2);