java如何判断俩个文件是否相同的?
例如用一个文件另存为成两个不同名的文件,用输入输出流编程,要如何来进行比较这两个文件是否相等呢?...
例如用一个文件另存为成两个不同名的文件,用输入输出流编程,要如何来进行比较这两个文件是否相等呢?
展开
4个回答
推荐于2017-12-16
展开全部
//判断的办法是分别将两个文件读进来
//先判断着两个文件的长度,如果长度不一样,那肯定不一样
//如果两个文件的长度(大小)一样,那么就对文件中的每一个字节进行比对
//只要有一个字节不同,两个文件就不同。
//否则两个文件就是相同的
//代码如下:(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();
}
}
}
}
}
//先判断着两个文件的长度,如果长度不一样,那肯定不一样
//如果两个文件的长度(大小)一样,那么就对文件中的每一个字节进行比对
//只要有一个字节不同,两个文件就不同。
//否则两个文件就是相同的
//代码如下:(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();
}
}
}
}
}
2013-07-12
展开全部
简单啊, MD5 一下,对比MD5的值就行了~~~
现在网上判断文件有没有被修改不就是用MD5么...
现在网上判断文件有没有被修改不就是用MD5么...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-12
展开全部
这个没有弄过,,,
不过说个理论给你试下看行不行~
就是你把那两个文件的内容给弄出来,来比较嘛~
或者弄成一个对象类,再进行比较~
不过说个理论给你试下看行不行~
就是你把那两个文件的内容给弄出来,来比较嘛~
或者弄成一个对象类,再进行比较~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-12
展开全部
不怎么明白你的意思,你用一个文件另存为两个不同的文件,文件名不同,而内容相通。而你所说的比较两个文件是否相等到底是比较什么啊???文件名还是内容??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询