详解使用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文件的资料请关注脚本之家其它相关文章!
相关文章
SpringCloud读取Nacos配置中心报错及遇到的坑:Could not resolve placehold
这篇文章主要介绍了SpringCloud读取Nacos配置中心报错:Could not resolve placeholder ‘xxx’ in value ‘${xxx},本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-03-03
一篇文章教你如何在SpringCloud项目中使用OpenFeign
这篇文章主要介绍了SpringCloud 使用Open feign 优化详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-08-08
SpringBoot3使用自定义注解+Jackson实现接口数据脱敏的步骤
本文介绍了一种以优雅的方式实现对接口返回的敏感数据,如手机号、邮箱、身份证等信息的脱敏处理,这种方法也是企业常用方法,话不多说我们一起来看一下吧2024-03-03


最新评论