详解使用Java代码读取并比较本地两个txt文件区别
作者:今夜有点儿凉
这篇文章主要为大家介绍了使用Java代码读取并比较本地两个txt文件区别详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
Java代码读取本地两个TXT文件
以下是使用Java代码读取本地两个TXT文件,并以行为单位比较两个文件的不同的示例:
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风格可
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()
方法可以直接读取文件的所有行,并返回一个流。然后,可以使用流的各种操作(如 filter 和 collect)对文件进行处理。
两个文件内容如图所示
打印结果
Lines in file A that are not in file B:
6666
Lines in file B that are not in file A:
666
请确保替换 fileAPath 和 fileBPath 变量的值为实际的文件路径。以上代码会比较文件 A 中的每一行是否存在于文件 B 中,并将文件 A 中独有的行打印出来。
请注意,以上代码假设文件内容较小,可以一次性读取到内存中。如果文件较大,可能需要采用逐行读取和缓存的方式进行比较,以避免内存溢出。
以上就是详解使用Java代码读取并比较本地两个txt文件区别的详细内容,更多关于Java 读取比较本地txt文件的资料请关注脚本之家其它相关文章!