
正文
java文件对比代码 java文件对比查重
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java分别读取两个txt文件里的数据进行比较,分别列出这两个文件中共有的数据,并统计每种数据的数量
我就不给你写代码了,给你说下思路。
1.用BufferedReader
分别读取这2个文件,循环读取,一次读取1行
将读取的数据分别放入2个List中,分别为list1,list2。
定义变量sameCount,用于记录1,2都有的数据条数。
2.循环list1,取出其中的每一条,并与list2中对比,相同则sameCount++;
至于输出1,2中各有多少条数据就很简单了,就是list1.size()和list2.size();
给你一点代码提示:
BufferedRreader br = new BufferedReader(new FileReader(new File("1.txt"));
String temp = null;
List list1 = new ArrayList();
while((temp = br.readLline() ) != null) {
list1.add(temp);
}
br.close();
这就是读取1.txt的内容,并放入list1中。
因为你要分别读取1,2的内容,所以你可以将这段代码写一个方法。
参数为文件名和要放入的List。如:readFile(String filename,List list);
对比就不要我说了吧。readFile()这个方法调用2次,分别读取1,2数据后得到list1,list2。
接下来循环1吧。
定义变量Integer sameCount = 0;
for(String s : list1) {
for (String ss : list2) {
if (s.equals(ss)) {
sameCount++;
}
}
}
代码给你写的差不多了,望采纳。
相关问答
Q1: java如何快速比较两个文件是否相同
计算MD5或SHA-1,一样的就是同一个文件
下面的代码,不需要额外使用第三方组件,且支持超大文件
// 计算文件的 MD5 值
publicstatic String getFileMD5(File file) {
if (!file.isFile()) {
return null;
}
MessageDigest digest = null;
FileInputStream in = null;
byte buffer[] = newbyte[8192];
int len;
try {
digest =MessageDigest.getInstance("MD5");
in = new FileInputStream(file);
while ((len = in.read(buffer)) != -1) {
digest.update(buffer, 0, len);
}
BigInteger bigInt = new BigInteger(1, digest.digest());
return bigInt.toString(16);
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
try {
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 计算文件的 SHA-1 值
publicstatic String getFileSha1(File file) {
if (!file.isFile()) {
return null;
}
MessageDigest digest = null;
FileInputStream in = null;
byte buffer[] = newbyte[8192];
int len;
try {
digest =MessageDigest.getInstance("SHA-1");
in = new FileInputStream(file);
while ((len = in.read(buffer)) != -1) {
digest.update(buffer, 0, len);
}
BigInteger bigInt = new BigInteger(1, digest.digest());
return bigInt.toString(16);
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
try {
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Q2: 用Java写一个类,用来比较两个文件夹中的文件:
给你个思路(自己仔细做做,其实不难):
1、查找两个文件中所有的文件很简单,使用两个map,把文件名加上文件大小作为键,把文件所在的路径加上A或者B作为值,这样能够得到连个map,解决问题一
2、重新定义一个map,将B文件生成的map添加进新的map,然后将A文件生成的map添加进新map(新添加的时候判断map的健是不是已经存在,如果存在,将该键的值改成A文件的路径)
3、遍历新生成的map,如果map元素键对应的value中包含了B而没有包含A 就说明,这个文件在B文件夹中,而没有在A文件夹中(可以使用contains这个方法)
Q3: 如何将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值!
* @param 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 MapString, String getDirMD5(File file,boolean listChild) {
if(!file.isDirectory()){
return null;
}
//filepath,md5
MapString, String map=new HashMapString, String();
String md5;
File files[]=file.listFiles();
for(int i=0;ifiles.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)));
}
}
Q4: git eclipse 怎么对比代码差异
右键点击你要对比的JAVA文件,依次选择Compare With---Head Revirsion
然后出现对比页面,左边是本地文件,右边是远程服务器文件
Q5: java分别读取两个txt文件里的数据再进行比较。再分别列出这两个文件中共有的和分别独有的数据。
ID后面是以个推文还是多个推文?
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class FileCompare {
public static void main(String[] args) throws IOException {
FileCompare c = new FileCompare();
c.compareFile();
}
public void compareFile(){
File file = new File("D:\\1.txt");
File file2 = new File("D:\\2.txt");
Set fileTextSet = new HashSet();
Set file2TextSet = new HashSet();
try {
getText(file,fileTextSet);
getText(file2,file2TextSet);
compareSet(fileTextSet, file2TextSet);
} catch (Exception e) {
e.printStackTrace();
}
}
private void compareSet(Set textSet,Set StextSet2){
for (Iterator iterator = textSet.iterator(); iterator.hasNext();) {
String name = (String) iterator.next();
if(StextSet2.contains(name)){
System.out.println("共同报文:"+name);
}else{
System.out.println("1独有报文:"+name);
}
}
for (Iterator iterator = StextSet2.iterator(); iterator.hasNext();) {
String name = (String) iterator.next();
if(!textSet.contains(name)){
System.out.println("2独有报文:"+name);
}
}
}
private void getText(File file,Set textSet) throws IOException {
BufferedReader br = null;
InputStream is = null;
try {
is = new FileInputStream(file);
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String lineStr = null;
while ((lineStr = br.readLine())!=null) {
String text = lineStr.substring(lineStr.indexOf(":"));//按照需求切分
textSet.add(text);
}
if(br!=null){
br.close();
}
if(is!=null){
is.close();
}
}catch (UnsupportedEncodingException e) {
e.printStackTrace();
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
} finally {
if(br!=null){
br.close();
}
if(is!=null){
is.close();
}
}
}
}
关于java文件对比代码和java文件对比查重的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






