Java學習系列:比較兩個文件的差異,並輸出差異的部分

場景

臨下班的時候,上級交給我一個任務,要求把某個目錄的配置文件和官方的配置文件做對比,比較一下,得到現有配置文件與官方配置文件的差異。

環境

軟件 版本
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.8Files工具類,可以輕鬆地將文件以行的方式讀取出來,並通過流的方式逐行與官方配置文件做比較,匹配出差異部分,並輸出。善於使用官方提供的工具類,減少重複造輪子的時間和精力,並比較好地解決上級交付的任務。

隨緣求贊

如果我的文章對大家產生了幫忙,可以在文章底部點個贊或者收藏;
如果有好的討論,可以留言;
如果想繼續查看我以後的文章,可以左上角點擊關注
拜拜

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章