Java学习系列:比较两个文件的差异,并输出差异的部分

场景

临下班的时候,上级交给我一个任务,要求把某个目录的配置文件和官方的配置文件做对比,比较一下,得到现有配置文件与官方配置文件的差异。

环境

软件版本
JDK1.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.8Files工具类,可以轻松地将文件以行的方式读取出来,并通过流的方式逐行与官方配置文件做比较,匹配出差异部分,并输出。善于使用官方提供的工具类,减少重复造轮子的时间和精力,并比较好地解决上级交付的任务。

随缘求赞

如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;
如果有好的讨论,可以留言;
如果想继续查看我以后的文章,可以左上角点击关注
拜拜

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枫夜求索阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值