使用Java jdk自带的方法生成大文件的md5码时,出现了诡异的问题。1. 当文件 >2G的时候2. 在windows系统上执行得到的结果和在linux上用命令md5sum得到的结果是一样的3. 但是在linux上执行的时候,得到的结果却和在linux上用命令md5sum得到的居然是不一样的??????
有没有人知道是什么原因或者是遇到这类似的问题啊?
代码如何:
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.math.BigInteger;
import java.security.MessageDigest;
public class FileDigest
{
private static byte[] buffer = new byte[1024];
public static String getMD5(File file)
{
int len = 0;
try
{
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
InputStream inputStream = new FileInputStream(file);
while ((len = inputStream.read(buffer)) != -1)
{
messageDigest.update(buffer, 0, len);
}
BigInteger bigInteger = new BigInteger(1, messageDigest.digest());
return bigInteger.toString(16);
}
catch (Exception e)
{
return null;
}
}
}