详解使用Java代码读取并比较本地两个txt文件区别

 更新时间:2023年07月11日 11:36:26   作者:今夜有点儿凉  
这篇文章主要为大家介绍了使用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文件的资料请关注脚本之家其它相关文章!

相关文章

  • spring依赖注入成功但在调用接口的时候拿到的依赖却是null问题

    spring依赖注入成功但在调用接口的时候拿到的依赖却是null问题

    这篇文章主要介绍了spring依赖注入成功但在调用接口的时候拿到的依赖却是null问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • springboot项目启动,但是访问报404错误的问题

    springboot项目启动,但是访问报404错误的问题

    这篇文章主要介绍了springboot项目启动,但是访问报404错误的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Spring中的@Scope注解详细讲解及示例

    Spring中的@Scope注解详细讲解及示例

    这篇文章主要介绍了Spring中的@Scope注解详细讲解及示例,@Scope注解是 Spring IOC 容器中的一个作用域,在 Spring IOC 容器中,他用来配置Bean实例的作用域对象,需要的朋友可以参考下
    2023-11-11
  • SpringBoot+Idea热部署实现流程解析

    SpringBoot+Idea热部署实现流程解析

    这篇文章主要介绍了SpringBoot+Idea热部署实现流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • java使用FFmpeg合成视频和音频并获取视频中的音频等操作(实例代码详解)

    java使用FFmpeg合成视频和音频并获取视频中的音频等操作(实例代码详解)

    这篇文章主要介绍了java使用FFmpeg合成视频和音频并获取视频中的音频等操作,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • Java利用FileUtils读取数据和写入数据到文件

    Java利用FileUtils读取数据和写入数据到文件

    这篇文章主要介绍了Java利用FileUtils读取数据和写入数据到文件,下面文章围绕FileUtils的相关资料展开怎么读取数据和写入数据到文件的内容,具有一定的参考价值,徐娅奥德小伙伴可以参考一下
    2021-12-12
  • java实现ReadWriteLock读写锁的示例

    java实现ReadWriteLock读写锁的示例

    ReadWriteLock是Java并发包中的接口,定义了读锁和写锁,读锁允许多线程同时访问共享资源,而写锁则要求独占,这种机制适用于读多写少的场景,可以提高并发效率同时保证数据一致性,本文就来详细的介绍一下如何实现,感兴趣的可以了解一下
    2024-09-09
  • 新手初学Java数组

    新手初学Java数组

    数组是相同类型数据的有序集合数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们数组的声明创建
    2021-07-07
  • Spring Boot日志介绍和配置

    Spring Boot日志介绍和配置

    在程序中,日志对象通过LoggerFactory获取,日志框架如SLF4J提供统一API,便于管理和维护,日志级别分为FATAL、ERROR、WARN、INFO、DEBUG、TRACE,通过配置可细化日志输出,日志还可持久化存储和格式化,使用lombok可简化日志代码的编写
    2024-11-11
  • SpringBoot使用classfinal-maven-plugin插件加密Jar包的示例代码

    SpringBoot使用classfinal-maven-plugin插件加密Jar包的示例代码

    这篇文章给大家介绍了SpringBoot使用classfinal-maven-plugin插件加密Jar包的实例,文中通过代码示例和图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-02-02

最新评论