将一个TXT文件里面数据读出 ,进行数据去重处理 ,写入文件

2023-11-09

       总的来说,分为三个模块,读文件模块、处理数据、写入文件。(中间有如何创建文件)

public class EG_Reader {

     //主方法
    public static void main(String[] args) {
        String filePath = "C:\\Users\\lenovo\\Desktop\\testRead.txt";//文件路径;
        String fileContexts = readerTxtFile(filePath);
        String fileContext  = dealTxtFile(fileContexts);//删除相同数字;
        writeTxtFile(fileContext);
    }
    //文件写入
    private static void writeTxtFile(String content) {
        // TODO Auto-generated method stub
        //System.out.println(content);
        BufferedWriter bw = null;
        
        //以下代码是在D:/testWrite/write下创建名为filename.txt的文件
        creatFile();
        try {
            File file = new File("D:/testWrite/write/filename.txt");//制定路径
            //如果没有文件,自动创建文件;
            
            if (!file.exists()) {
                file.createNewFile();
            }
            FileWriter fw = new FileWriter(file.getAbsoluteFile());
            bw = new BufferedWriter(fw);
            bw.write(content);
            bw.close();
            System.out.println("succeed");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    以下代码是在D:/testWrite/write下创建名为filename.txt的文件
    private static void creatFile() {
        // TODO Auto-generated method stub
         // 根据系统的实际情况选择目录分隔符(windows下是,linux下是/)
        String separator = File.separator;
        String directory = "D:" + separator + "testWrite" + separator + "write";
        // 以下这句的效果等同于上面两句,windows下正斜杠/和反斜杠都是可以的
        // linux下只认正斜杠,为了保证跨平台性,不建议使用反斜杠(在java程序中是转义字符,用\来表示反斜杠)
        // String directory = "myDir1/myDir2";
        String fileName = "filename.txt";
        // 在内存中创建一个文件对象,注意:此时还没有在硬盘对应目录下创建实实在在的文件
        File f = new File(directory, fileName);
        if (f.exists()) {
            // 文件已经存在,输出文件的相关信息
           // System.out.println(f.getAbsolutePath());
           // System.out.println(f.getName());
            //System.out.println(f.length());
        } else {
            // 先创建文件所在的目录
            f.getParentFile().mkdirs();
            try {
                // 创建新文件
                f.createNewFile();
            } catch (IOException e) {
                System.out.println("创建新文件时出现了错误。。。");
                e.printStackTrace();
            }
        }
    }
    //处理文件,删除相同数字;
    private static String dealTxtFile(String fileContext) {
        // TODO Auto-generated method stub
        //System.out.println(fileContext+"*****");
        StringBuffer str = new StringBuffer("");
        String[]     strs = fileContext.split("\\r\\n");
        //String dd = String.join(",", strs);
        ArrayList list = new ArrayList();
        for(int j=0;j<strs.length;j++) {
            if(!list.contains(strs[j])) {
                list.add(strs[j]);
            }
        }
        
        list.sort(null);//排序
      
        for(int i=0;i<list.size();i++) {
            //System.out.println(list.get(i));
            str.append(list.get(i));
            str.append("\r\n");
        }
       
        return str.toString();
    }

    
    
    //文件读取
    private static String readerTxtFile(String filePath) {
        // TODO Auto-generated method stub
        StringBuilder content = new StringBuilder("");
        try {
            String encoding = "UTF-8";
            File file = new File(filePath);
            if (file.isFile() && file.exists()) {
                InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);
                BufferedReader bufferedReader = new BufferedReader(read);
                String lineTxt = null;
                while ((lineTxt = bufferedReader.readLine()) != null) {
                    String[] result = getNamePhone(lineTxt);
                    content.append(result[0]);
                    //System.out.println(result[0] + "----" + result[1]);
                    content.append("\r\n");// txt换行
                }
                read.close();
            } else {
                System.out.println("找不到指定的文件");
            }
        } catch (Exception e) {
            System.out.println("读取文件内容出错");
            e.printStackTrace();
        }
        return content.toString();
    }
    //处理文件中每一行字符
    private static String[] getNamePhone(String lineTxt) {
        // TODO Auto-generated method stub
        String[] str = new String[1];
        //处理数据类型多的情况下
        /*int index = 0;
        for(int i=0;i<lineTxt.length();i++) {
            if(lineTxt.charAt(i)>='0'&&lineTxt.charAt(i)<='9') {
                index =i;
                break;
            }
        }
        str[0]=lineTxt.substring(0, index);*/
        str[0]=lineTxt;
        //System.out.println(lineTxt.toString());
        return str;
    }

}
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将一个TXT文件里面数据读出 ,进行数据去重处理 ,写入文件 的相关文章

  • ​Qt for Python 入门¶​

    本页重点介绍如何从源代码构建Qt for Python 如果你只想安装PySide2 与你需要运行 pip pip install pyside2 有关更多详细信息 请参阅我们的快速入门指南 此外 您可以 查看与项目相关的常见问题解答 一般
  • 【猿人学WEB题目专解】猿人学第17题

    据说 看我文章时 关注 点赞 收藏 的 帅哥美女们 心情都会不自觉的好起来 前言 作者简介 大家好我是 user from future 意思是 来自未来的用户 寓意着未来的自己一定很棒 个人主页 点我直达 在这里肯定能找到你想要的 专栏介
  • C#socket编程——TCP协议创建服务器端和客户端并进行通信

    我们做网络通信的时候需要有通信协议 在进行socket编程的时候有两种通信协议TCP UDP 这次我们就用简单的方式在一台电脑建立TCP协议的服务器端和客户端并使之进行通信 服务器端和客户端进行连接 第一步就行在服务器端创建一个socket
  • 白名单限制

    白名单是设置可以通过的用户 其他用户不可以通过 黑名单是设置不可以通过的用户 其他用户可以通过 常用的白名单限制 数据库使用白名单限制 rds数据库在阿里云设置能够访问的IP白名单 MySQL设置白名单 1 登录mysql mysql h
  • Vue 3-计算属性的getter,setter

  • Docker Alpine安装oracle客户端

    Docker Alpine安装oracle客户端 进入docker容器 docker run it name 容器名 镜像名 latest bin sh 由镜像创建容器并进入 只有镜像无容器 或 docker exec it 容器名 bin
  • Linux ——实操篇

    Linux 实操篇 前言 vi 和 vim 的基本介绍 vi和vim常用的三种模式 正常模式 插入模式 命令行模式 vi和vim基本使用 各种模式的相互切换 vi和vim快捷键 关机 重启命令 基本介绍 注意细节 用户登录和注销 基本介绍
  • 134. 加油站

    Powered by NEFU AB IN Link 文章目录 134 加油站 题意 思路 代码 134 加油站 题意 在一条环路上有 n 个加油站 其中第 i 个加油站有汽油 gas i 升 你有一辆油箱容量无限的的汽车 从第 i 个加油
  • ElasticSearch8.8 Docker local安装(一)

    ES ElasticSearch 的安装教程网上比较多 但是基本都是8 0以前版本 8 0以后的版本主要默认支持https加密了 连接上有一些不太一样 尤其用java连接的时候 因此再做一个报告避免一些坑 前提linux操作系统 我使用虚拟
  • SQL Server2008下载地址

    SQL Server2008下载地址 https www microsoft com zh CN download details aspx id 30438 版本说明 Microsoft SQL Server 2008 R2 Expres
  • HyperLedger Fabric 实战入门第一天

    2019独角兽企业重金招聘Python工程师标准 gt gt gt HyperLedger Fabric 实战入门 先实践后理论 第一步 初始化开发环境 参考官方文档 http hyperledger fabric readthedocs
  • 【深度学习基础】准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure

    深度学习基础 性能评估指标 超参数介绍 这里主要解释的是前四个 先给出百度百科定义 召回率 Recall Rate 也叫查全率 是检索出的相关文档数和文档库中所有的相关文档数的比率 衡量的是检索系统的查全率 精度是检索出的相关文档数与检索出
  • 腾达宽带连接服务器无响应,腾达(Tenda)无线路由器192.168.0.1打不开问题解决方法图文教程...

    本文介绍了腾达 Tenda 无线路由器192 168 0 1 打不开的解决办法 192 168 0 1是腾达无线路由器的设置网址 在浏览器中无法打开192 168 0 1登录页面 请参考下面的解决办法 方法一 正确设置电脑IP地址 这里以W
  • 循环单链表的销毁操作

    循环单链表销毁的时候 我的代码开始是这样子的 Status DestroyList L LinkList L 销毁链表 Lnode p while L p L L L gt next delete p return OK 不出意外的报错了
  • vue 弹窗 多选表格组件封装 以及 回调绑定

    组件
  • CUDA Toolkit多版本安装与配置

    CUDA Toolkit多版本安装目的是为了将CUDA Toolkit支持多个版本 并将当前版本更新到后续支持常见pytorch的版本 即cuda11 6 目前该系统默认安装的是cuda10 2 cuda11 0和cuda11 2 CUDA
  • layui折叠面板无效 - 已解决

    出现折叠面板无效 可能因为一下两点造成的 原因一 原因二 具体是为什么 我不清楚 正确的方式
  • Unity:给角色和敌人加上血条

    横条血条 想法 1 创建一个画布 画布里面包含血条 HealthBar 空对象 Fill image 血条填充物 Border image 血条框 Heart image 心脏图标 2 为HealthBar对象添加HealthBar脚本和S
  • 速腾聚创雷达最新驱动安装(包含ring和timestamp)运行lio-sam

    记录一下搞slam的过程 ring和timestamp 最近想跑lio sam 需要用到ring和timestamp两个参数 lio sam作者用的velodyne雷达是带这两个参数的 但是rs雷达的老版驱动录制的点云包没有这两个参数 在g
  • pandas分析数据的案例

    1 pandas分析电影数据的案例 https blog csdn net houyanhua1 article details 87858575

随机推荐

  • 共享停车位

    随着代步车的普及 对停车位的需求日益增长 停车位的供应跟不上汽车保有量的快速增长 地段有限 停车场有限 停车位有限 停车难已经成为当今 城市病 中最难解决的一环 随着共享经济的发展 错时停车的提出和实施也逐渐被大众接受 通过物联网创新技术实
  • 服务器自动备份怎么做,服务器运维技巧分享,用backup为数据库做定时备份

    写了套网站 除了日志需要定时分割外 数据库还需要定时备份 如果你用的是云服务器自带的备份功能 会更简单些 但也需要自行购买数据库服务器 对于像我这种还在初期的系统来说 能减少服务器的开支就一定要减少 毕竟现在还不挣钱 安装 用的是ruby
  • Ubuntu20 安装Ceres库和g2o库

    此文章主要适配视觉SLAM十四讲 Ubuntu20 04的情况 建议Ceres版本为2 0 0 g2o库为最新版 安装Ceres库 安装依赖 sudo apt get install liblapack dev libsuitesparse
  • JsonNode与java相互转换

    将Jackson JsonNode数组转换为Java List string JsonNode jsonNode getJsonPayload JsonNode partial jsonNode path someArrayField Li
  • 动态规划(C语言)

    一 入门 以斐波那契数列为例 它的第一项为1 第二项为1 从第三项开始 每一项的值都是前面两项的和 让我们求第n项的是多少 对于这个问题 我们从最开始的递归思想来看 int fib int n if n 1 n 2 return 1 ret
  • js对象的属性用中括号表示

    中括号运算符总是能代替点运算符 但点运算符却不一定能全部代替中括号运算符 中括号运算符可以用字符串变量的内容作为属性名 点运算符不能 中括号运算符可以用纯数字为属性名 点运算符不能 中括号运算符可以用js的关键字和保留字作为属性名 点运算符
  • RISC-V、ARM和X86架构

    1 要了解X86 ARM和RISC V架构的区别 就得先了解复杂指令集 CISC 和精简指令集 RISC A X86使用的是复杂指令集 CISC ARM和RISC V使用的是精简指令集 RISC 这便是属于这几种架构之间最大的区别 狭义的x
  • javaweb使用Thymeleaf 最凝练的CRUD项目-上

    目录 最凝练的CRUD 1 建模 物理建模 逻辑建模 2 总体架构 3 搭建持久化层所需环境 导入jar包 创建jdbc properties 创建JDBCUtils工具类 BaseDao 4 搭建表述层所需环境 导入jar包 创建View
  • 力扣(19) - 跳跃游戏

    给定一个非负整数数组 nums 你最初位于数组的 第一个下标 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个下标 示例 1 输入 nums 2 3 1 1 4 输出 true 解释 可以先跳 1 步 从下标 0
  • a*算法的优缺点_轻松理解机器学习算法-朴素贝叶斯

    1 预备知识 贝叶斯定理 Bayes theorem 是概率论中的一个定理 它跟随机变量的条件概率以及边缘概率分布有关 通常事件A在事件B发生的条件下的概率 与事件B在事件A发生的条件下的概率是不一样的 然而这两种是有确定关系的 这种关系就
  • ASP.NET Core 简介

    NET Core 是 NET Framework 的新一代版本 是微软开发的第一个具有跨平台 Windows Mac OSX Linux 能力的应用程序开发框 ASP NET Core 是 Microsoft 新开发的 基于 NET Cor
  • JSON

    数据提取之JSON与JsonPATH JSON JavaScript Object Notation 是一种轻量级的数据交换格式 它使得人们很容易的进行阅读和编写 同时也方便了机器进行解析和生成 适用于进行数据交互的场景 比如网站前台与后台
  • 20181220_eglSwapBuffers详解

    eglSwapBuffers详解 问题来自eglSwapBuffers是否有等待 如果调用eglSwapBuffers的话 是不是会导致帧率下降 2 7 1 BootAnimation中的调用 之所以需要了解这个api的具体实现 因为我们需
  • 标准DH建模与改进DH建模(二)—— 什么是改进DH法以及为什么要学?

    学习机器人建模并不是一个愉快的过程 不愉快的一个重要原因就是 建模得到的方程又臭又长 仅仅是计算一次也许都要花不少时间 更不要说除了正逆运动学方程 你还要需要动力学方程 甚至动力学参数标定方程 当你掌握了DH建模方法后 你会陷入短暂的满足感
  • Python APP自动化测试详解

    一 App自动化测试简介 随着移动互联网的发展 越来越多的App产品应运而生 很多公司除了Web产品外还研发了相应的手机App产品 一些公司的主营业务甚至就是App 测试工程师也需要掌握一定的App端测试技能 从而让自己从烦琐 重复的 点点
  • HTTP Status 500 - An exception occurred processing JSP page /WEB-INF

    HTTP Status 500 An exception occurred processing JSP page WEB INF test showCountry jsp at line 11type Exception reportme
  • 支付宝同步跳转和异步通知简要介绍

    支付宝同步跳转和异步通知简要介绍 同步跳转文件 return url php 异步通知文件 notify url php 用户支付完之后会直接执行return url php 只执行一次 我们在这个文件里写的代码用于修改数据库订单状态 改为
  • 史上最简单Robotium跨进程操作实践——基于ADB框架

    楼主原创 分享不易 转载请注明出处 谢谢 2015年2月3日更新 有些朋友在用真机尝试本方法时 抛出了InputStream cannot be null的异常 该异常是由于adb运行在robotium框架中时 是完全运行在手机中的 此时它
  • SFTP文件上传下载

    http www cnblogs com longyg archive 2012 06 25 2556576 html 转载 转载于 https www cnblogs com sunfb p 4330324 html
  • 将一个TXT文件里面数据读出 ,进行数据去重处理 ,写入文件

    总的来说 分为三个模块 读文件模块 处理数据 写入文件 中间有如何创建文件 public class EG Reader 主方法 public static void main String args String filePath C U