場景
臨下班的時候,上級交給我一個任務,要求把某個目錄的配置文件和官方的配置文件做對比,比較一下,得到現有配置文件與官方配置文件的差異。
環境
軟件 | 版本 |
---|---|
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
工具類,可以輕鬆地將文件以行的方式讀取出來,並通過流的方式逐行與官方配置文件做比較,匹配出差異部分,並輸出。善於使用官方提供的工具類,減少重複造輪子的時間和精力,並比較好地解決上級交付的任務。
隨緣求贊
如果我的文章對大家產生了幫忙,可以在文章底部點個贊或者收藏;
如果有好的討論,可以留言;
如果想繼續查看我以後的文章,可以左上角點擊關注