一、读取文件内容
二、将读取的文件转为list
三、使用guava里的difference方法,直接比较
public Sets.SetView<String> compareTwoFile(String oldFile, String newFile) throws IOException {
BufferedReader oldReader = new BufferedReader(new FileReader(oldFile));
BufferedReader newReader = new BufferedReader(new FileReader(newFile));
HashSet<String> oldSet = Sets.newHashSet(oldReader.lines().collect(Collectors.toList()));
HashSet<String> newSet = Sets.newHashSet(newReader.lines().collect(Collectors.toList()));
//旧文件与新文件的差异
return Sets.difference(oldSet,newSet);
//旧文件与新文件的差异
// return Sets.difference(newSet,oldSet);
}
测试
@Test
public void test() throws IOException {
String oldFile = "/Users/xxx/xxx/xxx/newFile.txt";
String newFile = "/Users/xxx/xxx/xxx/oldFile.txt";
Sets.SetView<String> result = compareTwoFile(oldFile,newFile);
System.out.println("旧文件有,新文件没有的内容:"+result.size());
System.out.println(result);
Sets.SetView<String> result1 = compareTwoFile(oldFile,newFile);
System.out.println("新文件有,旧文件没有的内容:"+result1.size());
System.out.println(result1);
}
Guava:Google 的 Java 核心库
Guava 是 Google 的一组核心 Java 库,其中包括新的集合类型(例如多映射和多集)、不可变集合、图库以及并发、I/O、哈希、原语、字符串等实用程序!它在 Google 的大多数 Java 项目中得到广泛使用,并且也被许多其他公司广泛使用。
番石榴有两种口味:
- JRE 版本需要 JDK 1.8 或更高版本。
- 如果需要 Android 支持,请使用 Android 版本。您可以在android目录中找到 Android Guava 源代码。
将 Guava 添加到你的构建中
Guava 的 Maven 组 ID 是com.google.guava
,其工件 ID 是guava
。Guava 提供两种不同的“风格”:一种用于 (Java 8+) JRE,一种用于 Android 或任何希望与 Android 兼容的库。这些风格在 Maven 版本字段中指定为 或33.2.1-jre
。 33.2.1-android
有关依赖 Guava 的更多信息,请参阅 在构建中使用 Guava。
要使用 Maven 添加对 Guava 的依赖,请使用以下命令:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>33.2.1-jre</version>
<!-- or, for Android: -->
<version>33.2.1-android</version>
</dependency>