您的位置:首页 > 编程语言 > Java开发

java比较文件内容是否相同的方法

2013-04-19 14:15 1436 查看
1、读取文件逐个字节比较:

public static boolean isFileUpdate(String oldName, String newName) {

File oldFile = new File(oldName);

File newFile = new File(newName);

try {

FileInputStream oldInStream = new FileInputStream(oldFile);

FileInputStream newInStream = new FileInputStream(newFile);

int oldChar = 0;

int newChar = 0;

while (true) {

oldChar = oldInStream.read();

newChar = newInStream.read();

if (oldChar != -1 && newChar != -1) {

if (oldChar != newChar) {

return false;

}

} else {

break;

}

}

return true;

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

2、读取该文件,返回一个字符串,通过equals判断两文件是否一致。

import java.math.BigInteger;

import java.security.MessageDigest;

public static boolean isFileUpdate(String oldName, String newName) {

File oldFile = new File(oldName);

File newFile = new File(newName);

String oldFileMd5 = getFileMD5(oldFile);

String newFileMd5 = getFileMD5(newFile);

if (oldFileMd5 == null || newFileMd5 == null) {

return false;

}

return (!oldFileMd5.equals(newFileMd5));

}

private static String getFileMD5(File file) {

if (!file.isFile()) {

return null;

}

MessageDigest digest = null;

FileInputStream inStream = null;

byte buffer[] = new byte[1024];

int len;

try {

digest = MessageDigest.getInstance("MD5");

inStream = new FileInputStream(file);

while ((len = inStream.read(buffer, 0, 1024)) != -1) {

digest.update(buffer, 0, len);

}

inStream.close();

} catch (Exception e) {

e.printStackTrace();

return null;

}

BigInteger bigInt = new BigInteger(1, digest.digest());

return bigInt.toString(16);

}

3、使用jar包:commons-codec-1.4.jar的md5比较方法

import org.apache.commons.codec.binary.Hex;

import org.apache.commons.codec.digest.DigestUtils;

public static boolean isFileUpdate(String oldName, String newName) {

File oldFile = new File(oldName);

File newFile = new File(newName);

String oldFileMd5 = null;

String newFileMd5 = null;

try {

oldFileMd5 = new String(Hex.encodeHex(DigestUtils.md5(new FileInputStream(oldFile))));

newFileMd5 = new String(Hex.encodeHex(DigestUtils.md5(new FileInputStream(newFile))));

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

if (oldFileMd5 == null || newFileMd5 == null) {

return false;

}

return (!oldFileMd5.equals(newFileMd5));

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: