如何用Java判断两个文件内容是否相同

 我来答
硪丨暧恋
2017-07-17 · TA获得超过8980个赞
知道大有可为答主
回答量:5336
采纳率:93%
帮助的人:2192万
展开全部
第一,判读MD5值或SHA-1,以MD5为例,

// 计算文件的 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();

}

}

}

第二,直接判读内容,代码如下:

public class IOOperation
{
public static void main(String[] args)
{
FileInputStream File1 = null;
FileInputStream File2 = null;
BufferedReader in = null;
String sFile;

if(args.length != 2)
{
System.out.println("The command line should be: java IOOperation testX.txt testX.txt");
System.out.println("X should be one of the array: 1, 2, 3");
System.exit(0);
}

try
{
File1 = new FileInputStream(args[0]);
File2 = new FileInputStream(args[1]);

try
{

if(File1.available() != File2.available())
{
//长度不同内容肯定不同
System.out.println(args[0] + " is not equal to " + args[1]);
}
else
{
boolean tag = true;

while( File1.read() != -1 && File2.read() != -1)
{
if(File1.read() != File2.read())
{
tag = false;
break;
}
}

if(tag == true)
System.out.println(args[0] + " equals to " + args[1]);
else
System.out.println(args[0] + " is not equal to " + args[1]);
}
}
catch(IOException e)
{
System.out.println(e);
}
}
catch (FileNotFoundException e)
{
System.out.println("File can't find..");
}
finally
{

try
{
if(File1 != null)
File1.close();
if(File2 != null)
File2.close();
}
catch (IOException e)
{
System.out.println(e);
}
}
}
}

这里因为使用了第二种方法所以直接用了main函数,代码结构可以再优化。MD5方法用到了以前没有接触到的知识,如MessageDigest、BigInteger等,个人觉得要想了解这些方法最好的方法就是读API文档。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式