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();
        }

    }
}

目录
相关文章
|
3月前
|
存储 Java 编译器
深入理解Java虚拟机--类文件结构
本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
|
3月前
|
存储 人工智能 Java
java之通过Http下载文件
本文介绍了使用Java实现通过文件链接下载文件到本地的方法,主要涉及URL、HttpURLConnection及输入输出流的操作。
183 0
|
3月前
|
监控 Java API
Java语言按文件创建日期排序及获取最新文件的技术
这段代码实现了文件创建时间的读取、文件列表的获取与排序以及获取最新文件的需求。它具备良好的效率和可读性,对于绝大多数处理文件属性相关的需求来说足够健壮。在实际应用中,根据具体情况,可能还需要进一步处理如访问权限不足、文件系统不支持某些属性等边界情况。
193 14
|
4月前
|
存储 Java 数据安全/隐私保护
Java技术栈揭秘:Base64加密和解密文件的实战案例
以上就是我们今天关于Java实现Base64编码和解码的实战案例介绍。希望能对你有所帮助。还有更多知识等待你去探索和学习,让我们一同努力,继续前行!
325 5
|
4月前
|
网络协议 安全 Java
实现Java语言的文件断点续传功能的技术方案。
像这样,我们就完成了一项看似高科技、实则亲民的小工程。这样的技术实现不仅具备实用性,也能在面对网络不稳定的挑战时,稳稳地、不失乐趣地完成工作。
247 0
|
7月前
|
人工智能 Java
Java 中数组Array和列表List的转换
本文介绍了数组与列表之间的相互转换方法,主要包括三部分:1)使用`Collections.addAll()`方法将数组转为列表,适用于引用类型,效率较高;2)通过`new ArrayList&lt;&gt;()`构造器结合`Arrays.asList()`实现类似功能;3)利用JDK8的`Stream`流式计算,支持基本数据类型数组的转换。此外,还详细讲解了列表转数组的方法,如借助`Stream`实现不同类型数组间的转换,并附带代码示例与执行结果,帮助读者深入理解两种数据结构的互转技巧。
363 1
Java 中数组Array和列表List的转换
|
7月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
7月前
|
存储 网络协议 安全
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
249 23
|
16天前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
49 0

热门文章

最新文章