【工具】JAVA 在单元读取文件并比较
package test20140709; import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; /**
* 以行为单位读取文件并比对,显示不同行
* @author fushihua-wb
* @date 2014-7-11
*/
public class compare {
/**
* 以行为单位读取文件,经常使用于读面向行的格式化文件
*/
private static String[] readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
String ss[] = new String[0];
int i = 0;
try {
System.out.println("以行为单位读取文件内容,一次读一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
// 显示行号
// if(tempString.contains("<url-pattern>")){
// //System.out.println("line " + line + ": " +
// tempString);
// //System.out.println("line " + line + ": " +
// tempString.trim());
// //System.out.println(tempString.trim());
// ss = insert(ss, tempString.trim());
// i++;
// }
// System.out.println("line " + line + ": " + tempString); ss = insert(ss, tempString.trim());
i++; line++; }
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
System.out.println("共" + i + "行");
System.out.println("START");
// for (String string : ss) {
// System.out.println(string);
// } // for (int j = 0;j <= ss.length;j++) {
// System.out.println(ss[j]);
// }
System.out.println("END");
}
return ss;
}
/*
* 插入到数组
*/
private static String[] insert(String[] arr, String str) {
int size = arr.length; String[] tmp = new String[size + 1]; System.arraycopy(arr, 0, tmp, 0, size); tmp[size] = str; return tmp;
} // 删除数组中当中一个元素
public static String[] delString(String[] str, String delString) {
// String [] str = {"Java", "C++", "Php", "C#", "Python"};
// for (String elementA:str ) {
// System.out.print(elementA + " ");
// }
// 删除php
List<String> list = new ArrayList<String>();
for (int i = 0; i < str.length; i++) {
list.add(str[i]);
}
// list.remove(2);
list.remove(delString);
// System.out.println();
String[] newStr = list.toArray(new String[1]); // 返回一个包括全部对象的指定类型的数组
// for (String elementB:newStr ) {
// System.out.print(elementB + " ");
// }
// System.out.println();
return newStr;
} /*
* 输出两个数组同样元素
*/
private static void compare(String fileName1, String fileName2) {
String[] ss1 = readFileByLines(fileName1);
String[] ss2 = readFileByLines(fileName2);
for (String s1 : ss1) {
for (String s2 : ss2) {
if (s1.endsWith(s2)) {
System.out.println(s1);
}
}
}
for (String s1 : ss2) {
System.out.println(s1);
}
}
/*
* 输出两个数组不同元素
*/
public static void compare1(String fileName1, String fileName2) {
// String a[] = new String[]{"a","a2","b3"};
// String b[] = new String[]{"b","b3","a2"};
System.out.println("START");
String[] a = readFileByLines(fileName1);
String[] b = readFileByLines(fileName2);
ArrayList c = new ArrayList();
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < b.length; j++) {
if (a[i].equals(b[j])) {
c.add(a[i]);
}
}
}
System.out.println("仅仅在" + fileName1 + "中:");
for (int i = 0; i < a.length; i++) {
if (!c.contains(a[i])) {
System.out.println(a[i] + "");
}
}
System.out
.println("----------------------------------------------------");
System.out.println("仅仅在" + fileName2 + "中:");
for (int i = 0; i < a.length; i++) {
if (!c.contains(b[i])) {
System.out.println(b[i] + "");
}
}
System.out.println("END");
} public static void main(String[] args) {
// readFileByLines("D:\\web-release.xml");
// readFileByLines("D:\\web-prod.xml");
// readFileByLines("D:\\web-prod1.xml");
// compare1("D:\\web-prod1.xml","D:\\web-release1.xml");
compare1("D:\\web-release1.xml", "D:\\web-prod1.xml");
}
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
【工具】JAVA 在单元读取文件并比较的更多相关文章
- java多线程批量读取文件(七)
新公司入职一个多月了,至今没有事情可以做,十来个新同事都一样抓狂,所以大家都自己学习一些新东西,我最近在看zookeeper,感觉蛮不错的,和微服务的zuul以及eureka功能类似,只是代码复杂了一 ...
- Java相对路径读取文件
不管你是新手还是老鸟,在程序中读取资源文件总会遇到一些找不到文件的问题,这与Java底层的实现有关,不能算bug,只要方法得当,问题还是可以解决的. 项目的文件夹结构: repathtest ├─sr ...
- [JAVA 多种方式读取文件]
package com.file; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream ...
- java多线程批量读取文件( 八)--读写分离
package com.net.thread.future; import java.io.BufferedReader; import java.io.BufferedWriter; import ...
- Java io实现读取文件特殊内容进行替换
最近公司在做一个项目其中一个需求是读取文件中的特殊字符在其后进行添加或删除字符操作,本来想直接使用randomAccessFile按行读取,读取到特殊字符就进行添加或删除操作,但是randomAcce ...
- 【java】:读取文件
PS:转 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容4.随机读取文件内容 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制 ...
- Java IO流读取文件
使用指定编码读取文件 public static String toString(File file, String charset){ StringBuilder result = new Stri ...
- java基础之读取文件方法大全
1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如 ...
- Java IO之一读取文件
package com.lf.iopreoject; import java.io.BufferedReader; import java.io.File; import java.io.FileIn ...
随机推荐
- 架设FLASH视频流server心得
什么样的情况下才使用FMS?有下面几种情形的时候,你可能须要用到FMS 1.须要通过Flash Player 播放视频,而视频是以流的方式,而不是http渐进式下载的方式进行播放的时候.渐进式下载就是 ...
- CC++刚開始学习的人编程教程(9) Windows8.1安装VS2013并捆绑QT与编程助手
我们在Windows8.1安装VS2013并捆绑QT与编程助手须要下列文件. 2. 在虚拟机中开启Windows8.1 3.然后选择VS2013的安装镜像. 4.将镜像拷贝到虚拟机. 5.我们装载这个 ...
- Android开发系列(二十二):AdapterViewFlipper的功能和使用方法
AdapterViewFlipper继承了AdapterViewAnimator,它会显示一个View组件,能够通过showPrevious()和showNext()方法控制组件显示上一个.下一个组件 ...
- iOS得知1_初体验
UIView:父类的所有控件,所有的UIView它是一个容器.可容纳其他UIView UIController:用于控制UIView,责创建/销毁自己的UIView,显示/隐藏UIView.处理UIV ...
- 探索Oracle数据库升级6 11.2.0.4.3 Upgrade12c(12.1.0.1)
探索Oracle数据库升级6 11.2.0.4.3 Upgrade12c(12.1.0.1) 一.前言: Oracle 12c公布距今已经一年有余了,其最大亮点是一个能够插拔的数据库(PD ...
- BIEE11g BI_server Jvm參数调整
1.找到user_projects\domains\bifoundation_domain\bin文件夹 2.复制startWeblogic.sh为新的文件startAdminWeblogic.sh, ...
- Linux内核的同步机制---自旋锁
自旋锁的思考:http://bbs.chinaunix.net/thread-2333160-1-1.html 近期在看宋宝华的<设备驱动开发具体解释>第二版.看到自旋锁的部分,有些疑惑. ...
- hdu4734(数位dp)
hdu4734 给定 a和b, 问区间[0,b]内有多少个数字的f(i) <=f(a) dp[i][s] 表示i位的数字的f<=s 所以比如如果第i+1位选择数字5之后, 那么只要剩下的i ...
- 发展合作-ASP.Net传递页面之间的值
在合作开发中,在页面串传值的时候,遇到了一些困难.在网上搜罗了一下,发现好多的传值方式,能够简单地分下面三种. 一. URL传值 原页面的值放到目标页面的URL中.然后通过QueryString方法获 ...
- 如何解决Windows8.1(32bit&64bit)下Cisco VPN Client拨号时报442错误的问题
Cisco VPN Cient大多数网络管理员.技术支持project最流行的教师和最终用户VPNclient一间.对于外部网络访问内部网络,技术类人员. 随着Windows8.1的推出.Cisco ...