合并两个文本文件,并删除合并后重复的行

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.InputStreamReader;

import java.util.Vector;

public class CleanFiles {

private static Vector stringlist;

public static void main(String[] args) throws Exception {

String filePath1;

String filePath2;

String filePath3;

String item;

stringlist = new Vector();

BufferedReader buffer = new BufferedReader(new InputStreamReader(

System.in));

System.out.println("请输入文件1路径和文件名:");

filePath1 = buffer.readLine();

System.out.println("请输入文件2路径和文件名:");

filePath2 = buffer.readLine();

System.out.println("请输入合并后文件路径和文件名");

filePath3 = buffer.readLine();

File file1 = new File(filePath1);

File file2 = new File(filePath2);

File file3 = new File(filePath3);

buffer.close();

buffer = new BufferedReader(new FileReader(file1));

while((item=buffer.readLine())!=null){

addString(stringlist,item);

}

buffer.close();

buffer = new BufferedReader(new FileReader(file2));

while((item= buffer.readLine())!=null){

addString(stringlist,item);

}

buffer.close();

// 搜索结果是经过排序的,根据此规律删除不合要求File

for (int i = 0; i < stringlist.size()-1; i++) {

if(stringlist.get(i).equals(stringlist.get(i+1))){

stringlist.remove(i);

if(i!=0)i--;

}

}

BufferedWriter bufferWriter = new BufferedWriter(new FileWriter(file3));

for(String temp:stringlist){

bufferWriter.write(temp);

bufferWriter.newLine();

}

bufferWriter.close();

}

public static void addString(Vector allStrings, String str) {

if (allStrings.isEmpty()) {

allStrings.add(str);

} else {

// 二分查找法

int left = 0, right = allStrings.size() - 1, middle, compare;

if (str.compareToIgnoreCase(allStrings.get(right)) >= 0) {

allStrings.add(str);

return;

}

if (str.compareToIgnoreCase(allStrings.get(0)) <= 0) {

allStrings.add(0, str);

return;

}

while (true) {

middle = (left + right) / 2;

compare = str.compareToIgnoreCase(allStrings.get(middle));

if (compare == 0 || middle == left) {

allStrings.add(middle + 1, str);

return;

} else {

if (compare < 0) {

right = middle;

} else {

left = middle;

}

}

}

}

}

}

java 合并txt文件_java合并文本文件并删除文件中重复行相关推荐

  1. java 自动删除文件夹权限_总结删除文件或文件夹的7种方法-JAVA IO基础总结第4篇...

    本文是Java IO总结系列篇的第4篇,前篇的访问地址如下: 如果您阅读完成,觉得此文对您有帮助,请给我点个赞,您的支持是我不竭的创作动力.为了方便大家理解,我特意制作了本文对应的视频:总结删除文件或 ...

  2. php去除每行的重复文本,php删除文本文件中重复行的方法

    本文实例讲述了php删除文本文件中重复行的方法.分享给大家供大家参考.具体分析如下: 这个php函数用来删除文件中的重复行,还可以指定是否忽略大小写,和指定换行符 ?12345678910111213 ...

  3. C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件.......

    本文收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归删除文件夹及文件.指定文件夹下 面的所有内容copy到目标文件夹下面.指定文件夹下面的所有内 ...

  4. linux删除文件里夹命令,Linux删除文件(夹)、创建文件(夹)命令是什么

    Linux删除文件(夹).创建文件(夹)命令是什么?在Linux系统中删除文件,很多用户都惯用rmdir命令,因为Linux没有回收站功能,所以笔者建议用户使用rm-rf命令,具体用法可以按照以下命令 ...

  5. python 删除文件、目录_python如何删除文件、目录

    本文讲述了python实现删除文件与目录的方法.分享给大家供大家参考.具体实现方法如下: os.remove(path) 删除文件 path. 如果path是一个目录, 抛出 OSError错误.如果 ...

  6. python删除链表中重复的节点_Java编程删除链表中重复的节点问题解决思路及源码分享...

    一. 题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 二. 例子 输入链表:1->2->3->3->4->4-&g ...

  7. linux多个文件删除重复行,shell中删除文件中重复行的方法

    Linux下文本处理工具很丰富很强大,例如这样一个文件: cat log www.jb51.net 192.168.1.1 www.jb51.net 192.168.1.1 www.jb51.net ...

  8. U盘删除的文件能恢复吗,删除文件怎么恢复

    U盘删除的文件能恢复吗,删除文件怎么恢复?U盘相信大家都使用过的吧,在存储数据和携带方面都是非常的方便的,唯一不好的地方就在于如果没有备份的情况下出现误删的意外,那么想要再恢复的话就有点小麻烦了,那误 ...

  9. java删除数组中重复元素的方法

    java删除数组中重复元素的方法 方法一:for双循环 方法二:利用HashMap,储存元素 方法一:for双循环 1.声明int类型index,该数即可为不重复元素下标,还可统计数组中不重复元素的个 ...

  10. java删除数组中重复元素的几种方法

    Java操控数组,删除数组中所有的重复元素,使其数组元素全部唯一,有以下几种方法: 1,使用set(最好想到),set本身就是不重复的集合: package Array_test;import jav ...

最新文章

  1. 学python就业要看哪些书-人人学Python,为什么就业拿高薪的那么少?
  2. IDEA导入Eclipse项目
  3. python天气预测算法_使用机器学习预测天气(第二部分)
  4. linux ssh和scp实例
  5. swoole 固定包头格式
  6. 特朗普前竞选经理犯罪证据曝光,竟是因不会 PDF 转换!
  7. Cocos2d-x之LUA脚本引擎深入分析
  8. OpenCV2 图像处理与计算机视觉(一)—— 去除一幅二值化图像中的椒盐噪声
  9. imageJ 如何下载plugin_如何给微服务架构的项目做验收测试?
  10. go遍历结构体(struct)字段对应的值,切片(slice),字典(map)
  11. jsp % % ! 区别
  12. 奇迹私服gs服务器端口未能连接请设置参数,奇迹私服架设之各个快捷方式参数...
  13. 英特尔神经计算棒_如何设置英特尔Movidius神经计算棒
  14. 小学计算机教育计划,2021年小学信息技术教学计划
  15. javaSE之异常详解(1)
  16. spring tx:advice 和 aop:config 配置事务 1
  17. iOS14 YYAnimatedImageView图片不显示,多数用在YYLabel的富文本中添加的图片
  18. 谈谈论文的发表(电光与控制,IEEE ACCESS)
  19. 计算机系统安全启动,安装Win11提示该电脑必须支持安全启动的解决方法
  20. 查看服务器操作系统版本信息,查看服务器操作系统版本信息

热门文章

  1. SpringBoot服务上线流程
  2. LeetCode简单题之数组中的字符串匹配
  3. LeetCode简单题之两句话中的不常见单词
  4. 自动生成低精度深度学习算子
  5. Wide Deep的OneFlow网络训练
  6. HarmonyOS系统概述
  7. MindSpore算子支持类
  8. 深度学习11个实用技巧
  9. Camera Calibration 相机标定
  10. Python:Scrapy Shell