转载自:http://blog.sina.com.cn/s/blog_7931305e0102v6ow.html
我们在传输文件的过程中会由于网络等其他原因造成文件在传输过程中部分出错,这时需要检验传输完的文件是不是正确的文件。可以采用许多种方法,我用的是MD5检验。
下面的这个函数是进行md5检验的函数,两个参数分别表示文件下载路径,和正确的文件MD5值。
1. 得到文件的MD5值并比较与原来的MD5值是否一样
public static boolean verifyInstallPackage(String packagePath,String crc) {
try {
MessageDigest sig = MessageDigest.getInstance("MD5");
File packageFile = new File(packagePath);
InputStream signedData = new FileInputStream(packageFile);
byte[] buffer = new byte[4096];//每次检验的文件区大小
long toRead = packageFile.length();
long soFar = 0;
boolean interrupted = false;
while (soFar < toRead) {
interrupted = Thread.interrupted();
if (interrupted) break;
int read = signedData.read(buffer);
soFar += read;
sig.update(buffer, 0, read);
}
byte[] digest = sig.digest();
String digestStr = bytesToHexString(digest);//将得到的MD5值进行移位转换
digestStr = digestStr.toLowerCase();
crc = crc.toLowerCase();
if (digestStr.equals(crc)) {//比较两个文件的MD5值,如果一样则返回true