io读两个文件,生成list 排重后写本地文件(Java)

简介: io读两个文件,生成list 排重后写本地文件(Java)

io读两个文件,生成list 排重后写本地文件(Java)


import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 2020年11月16日15点
 * 作者 石宗昊
 * io读两个文件,生成list 排重后写文件
 */
public class test10 {
    public static void main(String[] args) throws IOException {
        List<String> list = new ArrayList<String>();
        list = file1("C:\\Users\\admin\\Desktop\\test\\df.txt");
        list.removeAll(file2("C:\\Users\\admin\\Desktop\\test\\wf.txt"));
        System.out.println("file1-fil2=" + list.size());
        //写文件
        Input(list, "C:\\Users\\admin\\Desktop\\test\\123.txt");
        System.out.println("PrintWriter_OK");
    }

    //传入 "073126" "17737134329" "2020-10-28 00:06:38" "2020-10-28 00:06:47" "DELIVRD" "DELIVRD" "ninde"  文件地址
    public static List<String> file1(String url) throws IOException {
        //用来存放经过处理最后需要比对的
        List<String> list = new ArrayList<String>();
        //传入要读目标地址
        File file = new File(url);
        //生成io流
        FileReader fileReader = new FileReader(file);
        //接逐行数据
        BufferedReader br = new BufferedReader(fileReader);
        //判断文件是否存在
        if (file.exists()) {
            //暂存每行内容
            String lineContent = null;
            while ((lineContent = br.readLine()) != null) {
                //截取  格式为 17799358256,2020-10-28 00:06:55
                list.add(lineContent.substring(10, 43).replace("\"\t\"", ","));
            }
        }
        //关闭读文件流
        br.close();
        fileReader.close();
        System.out.println("file1:" + list.size());
        return list;
    }

    //传入 18074522410,1,2020-10-28 00:06:45,3,DELIVRD,0 文件地址
    public static List<String> file2(String url) throws IOException {
        //传入要读目标地址
        File file = new File(url);
        //生成io流
        FileReader fileReader = new FileReader(file);
        //接逐行数据
        BufferedReader br = new BufferedReader(fileReader);
        //用来接       18074522410,1,2020-10-28 00:06:45,3,DELIVRD,0  号码与日期中间的数字
        int a2;
        //用来存放经过处理最后需要比对的
        List<String> list = new ArrayList<String>();
        //判断文件是否存在
        if (file.exists()) {
            //暂存每行内容
            String lineContent = null;
            //如果有下一行
            while ((lineContent = br.readLine()) != null) {
                //如果读到的行  有DELIVRD字段
                if (lineContent.contains("DELIVRD")) {
                    //拿到需要重复的行数
                    a2 = Integer.parseInt((lineContent.substring(12, 13)));
                    //重复次数
                    for (int i = 0; i < a2; i++) {
                        //循环写入号段,日期   //18115170627,2020-10-28 00:07:02
                        list.add(lineContent.substring(0, 11) + "," + lineContent.substring(14, 33));
                    }
                }
            }
        }
        //关闭读文件流
        br.close();
        fileReader.close();
        System.out.println("file2:" + list.size());
        return list;
    }


    //将文件写入本地用的     写入内容   写入地址
    public static synchronized void Input(List<String> list, String url) {
        FileWriter fw = null;
        try {
            //如果文件存在,则追加内容;如果文件不存在,则创建文件
            File f = new File(url);
            fw = new FileWriter(f, true);
            PrintWriter pw = new PrintWriter(fw);
            for (String s : list) {
                pw.println(s);
            }
            pw.flush();
            fw.flush();
            pw.close();
            fw.close();

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

目录
打赏
0
2
2
0
47
分享
相关文章
Java 中数组Array和列表List的转换
本文介绍了数组与列表之间的相互转换方法,主要包括三部分:1)使用`Collections.addAll()`方法将数组转为列表,适用于引用类型,效率较高;2)通过`new ArrayList&lt;&gt;()`构造器结合`Arrays.asList()`实现类似功能;3)利用JDK8的`Stream`流式计算,支持基本数据类型数组的转换。此外,还详细讲解了列表转数组的方法,如借助`Stream`实现不同类型数组间的转换,并附带代码示例与执行结果,帮助读者深入理解两种数据结构的互转技巧。
Java 中数组Array和列表List的转换
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
77 23
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
90 34
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
37 4
解锁“分享文件”高效密码:探秘 Java 二叉搜索树算法
在信息爆炸的时代,文件分享至关重要。二叉搜索树(BST)以其高效的查找性能,为文件分享优化提供了新路径。本文聚焦Java环境下BST的应用,介绍其基础结构、实现示例及进阶优化。BST通过有序节点快速定位文件,结合自平衡树、多线程和权限管理,大幅提升文件分享效率与安全性。代码示例展示了文件插入与查找的基本操作,适用于大规模并发场景,确保分享过程流畅高效。掌握BST算法,助力文件分享创新发展。
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
462 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
JAVA网络IO之NIO/BIO
本文介绍了Java网络编程的基础与历史演进,重点阐述了IO和Socket的概念。Java的IO分为设备和接口两部分,通过流、字节、字符等方式实现与外部的交互。
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
70 0
【JavaEE】——文件IO(万字长文)
文件路径,文本文件,二进制文件,File类,文件流,字节流(InputStream,OutputStream)字符流(Reader,Writer)
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等