㈠ java求助:编写一个程序,比较两个文件的内容是否相同。
这个要涉及很多方面,首先就是你的文件是什么,txt,word算是最常见的,要是cad之类就困难的多其次是文件有多大,要是txt这类的,文件又不是非常大的话,就是直接读取,然后就是直接比较
㈡ java编程,两个文件,比较他们的内容是否一样,不一样的部分以*标出,并将结果输出到另一个文件中
importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjava.util.ArrayList;importjava.util.Iterator;publicclassDemo{publicstaticvoidmain(String[]args)throwsIOException{BufferedReaderb1=newBufferedReader(newFileReader("F:\a.txt"));BufferedReaderb2=newBufferedReader(newFileReader("F:\b.txt"));BufferedWriterbw=newBufferedWriter(newFileWriter("F:\ab.txt"));Strings1=null;Strings2=null;ArrayList<String>list1=newArrayList<String>();ArrayList<String>list2=newArrayList<String>();while((s1=b1.readLine())!=null){list1.add(s1);}while((s2=b2.readLine())!=null){list2.add(s2);}list1.removeAll(list2);for(Iterator<String>it=list1.iterator();it.hasNext();){bw.write(it.next()+"");}bw.close();b2.close();b1.close();}}
//异常我直接throws了,你自己捕捉一下吧。
㈢ java 文件内容 比较
比较文件的MD5即可import java.io.File;import java.io.FileInputStream;import java.math.BigInteger;import java.security.MessageDigest;import java.util.HashMap;import java.util.Map;public class FileDigest { /** * 获取单个文件的MD5值! * @ file * @return */ public static String getFileMD5(File file) { if (!file.isFile()){ return null; } MessageDigest digest = null; FileInputStream in=null; byte buffer[] = new byte[1024]; int len; try { digest = MessageDigest.getInstance("MD5"); in = new FileInputStream(file); while ((len = in.read(buffer, 0, 1024)) != -1) { digest.update(buffer, 0, len); } in.close(); } catch (Exception e) { e.printStackTrace(); return null; } BigInteger bigInt = new BigInteger(1, digest.digest()); return bigInt.toString(16); } /** * 获取文件夹中文件的MD5值 * @param file * @param listChild ;true递归子目录中的文件 * @return */ public static Map<String, String> getDirMD5(File file,boolean listChild) { if(!file.isDirectory()){ return null; } //<filepath,md5> Map<String, String> map=new HashMap<String, String>(); String md5; File files[]=file.listFiles(); for(int i=0;i<files.length;i++){ File f=files[i]; if(f.isDirectory()&&listChild){ map.putAll(getDirMD5(f, listChild)); } else { md5=getFileMD5(f); if(md5!=null){ map.put(f.getPath(), md5); } } } return map; }public static void main(String[] args) { File file1 = new File("a.txt"); File file2 = new File("b.txt"); System.out.println(getFileMD5(file1).equals(getFileMD5(file2))); }}
㈣ 如何用JAVA技术编写一个两文件内容比较的程序
没有做过你的这种程序的实现,但是下面的java代码或许多你有帮助[此程序实现的是一个文本查找器,即是,能查找出里面符合你要寻找的内容,并说明有几处,这个有点像写字板里面的查找器的功能,(需要联系Q二七四二33六七二)希望对你两个文件的相同的字符比较有提示作用]//这个输入的内容有限,就不能全部显示代码,写点供参考/**类matchFun用于处理有关字符串查找和替换算法*/class matchFun{ StringBuffer repStr; /*方法strFind用于实现字符串查找,返回匹配的次数*/ public int strFind(String s1,String s2,int pos) { /*变量i和j分别表示主串和模式串中当前字符串的位置,k表示匹配次数*/ int i,j,k=0; //pos代表主串中开始比较的位置 i = pos; j = 0; while(i<s1.length()&&j<s2.length()) { if(s1.charAt(i) == s2.charAt(j)) { ++i; ++j; if(j==s2.length()) { //j=s2.length()表示字符串匹配成功,匹配次数加1 k = k+1; //将指示主串和模式串中当前字符的变量i和j进行回退 i = i-j+1; j = 0; } } else {i = i-j+1; j = 0;} } return k; } /*方法strReplace用于实现字符串替换操作,返回替换的次数*/ public int strReplace(String s1,String s2,String s3,int pos) { /*变量i和j分别表示主串和模式串中当前字符串的位置,k表示匹配次数*/ int i,j,k=0; i = pos; j = 0; //将s1转化成StringBuffer型进行操作 repStr = new StringBuffer(s1); while(i<repStr.length()&&j<s2.length()) { if(repStr.charAt(i) == s2.charAt(j)) { ++i; ++j; if(j==s2.length()) { /*j=s2.length()表示字符串匹配成功,匹配次数加1,此外对主串进行字符串替换*/ k = k+1; repStr.replace(i-j,i,s3); //将j进行重新赋值开始新的比较 j = 0; } } else {i = i-j+1; j = 0;} } return k; }}
㈤ java分别读取两个txt文件里的数据进行比较,分别列出这两个文件中共有的数据,并统计每种数据的数量
package cc;import java.io.BufferedReader;import java.io.FileReader;public class Cmp {public static void main(String[] args) throws Exception {BufferedReader br1 = new BufferedReader(new FileReader("1.txt"));BufferedReader br2 = new BufferedReader(new FileReader("2.txt"));int all = 0;int l1=0, l2=0,i,j;String str1[] = new String[100];String str2[] = new String[100];while ((str1[l1]=br1.readLine())!=null) l1++;while ((str2[l2]=br2.readLine())!=null) l2++;for (i=0;i<l1;i++) {for (j=0;j<l2;j++) {if (str1[i].compareTo(str2[j])==0) {all ++;}}}System.out.println("1中有:" + (l1-all) + "条;");System.out.println("2中有:" + (l2-all) + "条;");System.out.println("共有:" + all + "条;");br1.close();br2.close();}}
㈥ java如何快速比较两个文件是否相同
计算或SHA-1,一样的就是同一个文件
下面的代码,不需要额外使用第三方组件,且支持超大文件
//计算文件的MD5值publicstaticStringgetFileMD5(Filefile){if(!file.isFile()){returnnull;}MessageDigestdigest=null;FileInputStreamin=null;bytebuffer[]=newbyte[8192];intlen;try{digest=MessageDigest.getInstance("MD5");in=newFileInputStream(file);while((len=in.read(buffer))!=-1){digest.update(buffer,0,len);}BigIntegerbigInt=newBigInteger(1,digest.digest());returnbigInt.toString(16);}catch(Exceptione){e.printStackTrace();returnnull;}finally{try{in.close();}catch(Exceptione){e.printStackTrace();}}}
//计算文件的SHA-1值publicstaticStringgetFileSha1(Filefile){if(!file.isFile()){returnnull;}MessageDigestdigest=null;FileInputStreamin=null;bytebuffer[]=newbyte[8192];intlen;try{digest=MessageDigest.getInstance("SHA-1");in=newFileInputStream(file);while((len=in.read(buffer))!=-1){digest.update(buffer,0,len);}BigIntegerbigInt=newBigInteger(1,digest.digest());returnbigInt.toString(16);}catch(Exceptione){e.printStackTrace();returnnull;}finally{try{in.close();}catch(Exceptione){e.printStackTrace();}}}
㈦ java比较2个文件是否是相同的文件,是一个一个字节比较还是计算MD5比较好啊
不同内容得出相同MD5值,虽然概率低,但总是不放心。如果在已知文件编码范围的条件下,找到MD5绝对区分长度范围(即:该范围内取样内容的MD5相同的,内容保证相同;绝不存在不同内容得出相同MD5值的现象),那么,可按合理的长度分片、按一定顺序遍历整个文件(属性信息、头部、尾部、同步随机点、其他),比较MD5,一旦有异立即判定文件不同,终止比较。这种分片取样比较MD5的思路可能快于逐字节比较也绝对可信要确保 100%正确就必须校验全文,通过以上思路来比较,即是。(注:其他据说相对于MD5来讲不易碰撞(即不同内容得出相同MD5值的概率可能更低)的算法推荐:起码 SHA1 ,最好 SHA256、 SHA512、MD5+CRC32、HMAC,或者几种不同类型算法的同步进行。在精通算法的情况下,将这里推荐的算法取代上文中提到的MD5来考量,能扩大绝对区分长度范围,可能更方便更快的比较。但是又有这样的考虑:逐字节比较的算法最简单,算法弄复杂了反而会增加额余的时间;逐字节比较的算法也可以放到上文中来考量,进行同步取样和各种遍历的顺序与方式,说不定,在保证100%的可信度的条件下,逐字比较反而最快呢? 我觉得时间的耗费关键处在于,所有的算法,都要将两个位于不同区域或载体的文件的同位区域收集到一起进行比较,这个收集花费时间Ta(i),与取样长度、存储区域或载体等相关;{如果要将文件取很大一部或全部读入内存,然后再逐一集中比较,则会减小以上的Ta(i),而增加一个额外读入的时间Tc(i)*次数M(i)}。比较的次数大致为N(i);而如果在一个文件中顺序读取一个区域并且计算它的某个整体评定值,这个花费的时间为Tb(i),与取样长度、计算程序、设备性能等相关。总体的比较时间大致是Ta(i)*N(i)*Tb(i)+{Tc(i)*M(i)}逐字节比较,其中Tb(i)、Ta(i)都是最短的,但是N(i)最大,总之,可以设计不同的算法,通过实际环境和文件的检测,来决定采用何种算法。)外一则:两个取样内容, MD5等算法的计算值 不同,则内容一定不同; 计算值相同,则 内容可能相同,但可能性是否达到100%,内容相同的概率是多少,根据编码范围、算法来确定。如果是比较一个文件和许多其他文件是否相同,并且提前知道其他文件的 MD5 值,可先比较 MD5 值可以大大提高文件比较的速度。
㈧ JAVA实现如何比较两个文档之间的异同点
楼上回答驴唇不对马抄嘴。这个文件比较功能,我做过比较txt简单文本文件的。office文件没比过,说下想法,希望能对你有帮助打开要读取的两份文件,依次读取A所有行数,将每一行的数据以字符串的形式存储在一个字符串数组里,假如是 StringA[] ,同时也一样处理 B文件 分别从开始遍历两个 字符串数组,比较 相似(相同) 字符百分比。当然有时候可能A文件第10行是一个空行,但是其下面的所有数据都和B文件一样,所以这个遍历对比不是门当户对的 行行相比,而是 一次遍历多对多的比较(但是仍要考虑顺序,比如A第10行和B第15行相同,但是A第12行又和B第10行相同,那么这一个范围段都是不匹配片断),找出相似度最高的。希望能对你有帮助吧
㈨ 有两个名字一样的java文件,怎样比较其内容的不同地方(一个是以前写的,一个更新的程序)有什么方法
1、如果一个是本地文件,一个是svn服务器上的,可以直接使用eclipse里面svn的“比较对象”——“资源库中的最新内容”(你的应该是英文)2、UltraEdit中“文件”——“比较文件”,选中要比较的两个文件即可。
㈩ 如何用Java判断两个文件内容是否相同
//判断的办法是分别将两个文件读进来//先判断着两个文件的长度,如果长度不一样,那肯定不一样//如果两个文件的长度(大小)一样,那么就对文件中的每一个字节进行比对//只要有一个字节不同,两个文件就不同。//否则两个文件就是相同的//代码如下:(JDK1.4+)(代码格式被吃掉了,请自己手工排一下)package 兲髙亻壬鸟飞;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class Answer1 {public static void main(String[] args) {//文件名要用绝对路径//相对路径也可以,但是容易弄错String fileName1 = "xxx";//写你需要判断的第一个文件的文件名String fileName2 = "yyy";//写你需要判断的第二个文件的文件名FileInputStream fis1 = null;FileInputStream fis2 = null;try {fis1 = new FileInputStream(fileName1);fis2 = new FileInputStream(fileName2);int len1 = fis1.available();int len2 = fis2.available();if (len1 == len2) {//长度相同,则比较具体内容//建立两个字节缓冲区byte[] data1 = new byte[len1];byte[] data2 = new byte[len2];//分别将两个文件的内容读入缓冲区fis1.read(data1);fis2.read(data2);//依次比较文件中的每一个字节for (int i=0; i<len1; i++) {//只要有一个字节不同,两个文件就不一样if (data1[i] != data2[i]) {System.out.println("文件内容不一样");return;}}System.out.println("两个文件完全相同");} else {//长度不一样,文件肯定不同}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {//关闭文件流,防止内存泄漏if (fis1 != null) {try {fis1.close();} catch (IOException e) {//忽略e.printStackTrace();}}if (fis2 != null) {try {fis2.close();} catch (IOException e) {//忽略e.printStackTrace();}}}}}
未经允许不得转载:山九号 » java比较文件内容|java比较2个文件是否是相同的文件是一个一个字节比较还是计算MD5比较好啊