场景
临下班的时候,上级交给我一个任务,要求把某个目录的配置文件和官方的配置文件做对比,比较一下,得到现有配置文件与官方配置文件的差异。
环境
软件 | 版本 |
---|---|
JDK | 1.8 |
正文
思路
使用JDK 1.8
的流的方式,将文件以行的形式读取出来,然后对比官方配置文件,判断不匹配即为差异的部分。
示例
接下来就展示一下代码部分,各位读者请看:
/**
* 匹配两个文件的差异,主要输出新文件与旧文件的差异,并输出
* @param oldFile 旧的文件
* @param newFile 当前新文件
* @throws IOException 异常
*/
public static void compareTwoFile(String oldFile, String newFile) throws IOException {
List<String> list1 = Files.readAllLines(Paths.get(oldFile));
List<String> list2 = Files.readAllLines(Paths.get(newFile));
log.info("比较{}和{}两个文件,以 {} 为主", oldFile, newFile, newFile);
List<String> finalList = list2.stream().filter(line ->
list1.stream().filter(line2 -> line2.equals(line)).count() == 0
).collect(Collectors.toList());
if (finalList.size() == 0) {
log.info("两个文件无差异");
}else{
log.info("以下为差异的地方:");
finalList.forEach(one -> System.out.println(one));
}
}
样例输出
18:10:19.034 [main] INFO thread.TestCompareFile - 比较D:\software\tomcat\apache-tomcat-7.0.62\conf\catalina.policy
和D:\software\tomcat\apache-tomcat_T\conf\catalina.policy两个文件,
以 D:\software\tomcat\apache-tomcat_EOMS_FT\conf\catalina.policy 为主
18:10:19.110 [main] INFO thread.TestCompareFile - 两个文件无差异
总结
使用JDK1.8
的Files
工具类,可以轻松地将文件以行的方式读取出来,并通过流的方式逐行与官方配置文件做比较,匹配出差异部分,并输出。善于使用官方提供的工具类,减少重复造轮子的时间和精力,并比较好地解决上级交付的任务。
随缘求赞
如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;
如果有好的讨论,可以留言;
如果想继续查看我以后的文章,可以左上角点击关注