詳解使用Java代碼讀取并比較本地兩個(gè)txt文件區(qū)別
Java代碼讀取本地兩個(gè)TXT文件
以下是使用Java代碼讀取本地兩個(gè)TXT文件,并以行為單位比較兩個(gè)文件的不同的示例:
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class FileComparator { public static void main(String[] args) { String fileAPath = "C:/Users/MAO/Desktop/A.txt"; String fileBPath = "C:/Users/MAO/Desktop/B.txt"; List<String> fileALines = readFileLines(fileAPath); List<String> fileBLines = readFileLines(fileBPath); List<String> uniqueLinesInFileA = new ArrayList<>(); for (String line : fileALines) { if (!fileBLines.contains(line)) { uniqueLinesInFileA.add(line); } } List<String> uniqueLinesInFileB = new ArrayList<>(); for (String line : fileBLines) { if (!fileALines.contains(line)) { uniqueLinesInFileB.add(line); } } // 文件A中不在文件B中的行 System.out.println("Lines in file A that are not in file B:"); for (String line : uniqueLinesInFileA) { System.out.println(line); } // 文件B中不在文件A中的行 System.out.println("Lines in file B that are not in file A:"); for (String line : uniqueLinesInFileB) { System.out.println(line); } } private static List<String> readFileLines(String filePath) { List<String> lines = new ArrayList<>(); try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) { String line; while ((line = reader.readLine()) != null) { lines.add(line); } } catch (IOException e) { e.printStackTrace(); } return lines; } }
JAVA 8風(fēng)格可
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; import java.util.stream.Collectors; public class FileComparator { public static void main(String[] args) throws IOException { String fileAPath = "C:/Users/MAO/Desktop/A.txt"; String fileBPath = "C:/Users/MAO/Desktop/B.txt"; List<String> fileALines = Files.lines(Paths.get(fileAPath)) .collect(Collectors.toList()); List<String> fileBLines = Files.lines(Paths.get(fileBPath)) .collect(Collectors.toList()); // 文件A中不在文件B中的行 List<String> uniqueLinesInFileA = fileALines.stream() .filter(line -> !fileBLines.contains(line)) .collect(Collectors.toList()); // 文件B中不在文件A中的行 List<String> uniqueLinesInFileB = fileBLines.stream() .filter(line -> !fileALines.contains(line)) .collect(Collectors.toList()); System.out.println("Lines in file A that are not in file B:"); uniqueLinesInFileA.forEach(System.out::println); System.out.println("Lines in file B that are not in file A:"); uniqueLinesInFileB.forEach(System.out::println); } }
使用Java 8 的 Files.lines()
方法可以直接讀取文件的所有行,并返回一個(gè)流。然后,可以使用流的各種操作(如 filter 和 collect)對(duì)文件進(jìn)行處理。
兩個(gè)文件內(nèi)容如圖所示
打印結(jié)果
Lines in file A that are not in file B:
6666
Lines in file B that are not in file A:
666
請(qǐng)確保替換 fileAPath 和 fileBPath 變量的值為實(shí)際的文件路徑。以上代碼會(huì)比較文件 A 中的每一行是否存在于文件 B 中,并將文件 A 中獨(dú)有的行打印出來(lái)。
請(qǐng)注意,以上代碼假設(shè)文件內(nèi)容較小,可以一次性讀取到內(nèi)存中。如果文件較大,可能需要采用逐行讀取和緩存的方式進(jìn)行比較,以避免內(nèi)存溢出。
以上就是詳解使用Java代碼讀取并比較本地兩個(gè)txt文件區(qū)別的詳細(xì)內(nèi)容,更多關(guān)于Java 讀取比較本地txt文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java 數(shù)據(jù)結(jié)構(gòu)哈希算法之哈希桶方式解決哈希沖突
實(shí)際上哈希桶是解決哈希表沖突的一種方法。常見(jiàn)的解決沖突的兩種方法:分離鏈接法、開(kāi)放定址法。其中使用分離鏈接法,得到的對(duì)應(yīng)關(guān)系即為哈希桶2022-02-02SpringCloud讀取Nacos配置中心報(bào)錯(cuò)及遇到的坑:Could?not?resolve?placehold
這篇文章主要介紹了SpringCloud讀取Nacos配置中心報(bào)錯(cuò):Could?not?resolve?placeholder?‘xxx’?in?value?‘${xxx},本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03一篇文章教你如何在SpringCloud項(xiàng)目中使用OpenFeign
這篇文章主要介紹了SpringCloud 使用Open feign 優(yōu)化詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-08-08總結(jié)Java常用的時(shí)間相關(guān)轉(zhuǎn)化
今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著Java常用的時(shí)間相關(guān)轉(zhuǎn)化展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06通過(guò)實(shí)例了解Java 8創(chuàng)建Stream流的5種方法
這篇文章主要介紹了通過(guò)實(shí)例了解Java 8創(chuàng)建Stream流的5種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12idea在運(yùn)行期間,實(shí)現(xiàn)讓修改的頁(yè)面實(shí)時(shí)生效
這篇文章主要介紹了idea在運(yùn)行期間,實(shí)現(xiàn)讓修改的頁(yè)面實(shí)時(shí)生效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01SpringBoot3使用?自定義注解+Jackson實(shí)現(xiàn)接口數(shù)據(jù)脫敏的步驟
本文介紹了一種以優(yōu)雅的方式實(shí)現(xiàn)對(duì)接口返回的敏感數(shù)據(jù),如手機(jī)號(hào)、郵箱、身份證等信息的脫敏處理,這種方法也是企業(yè)常用方法,話不多說(shuō)我們一起來(lái)看一下吧2024-03-03