java通过md5比较文件
时间: 2023-08-26 10:03:38 浏览: 100
md5文件对比
可以通过计算文件的 MD5 摘要来比较文件是否相同,方法如下:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class FileMD5 {
public static void main(String[] args) {
String file1Path = "file1.txt";
String file2Path = "file2.txt";
File file1 = new File(file1Path);
File file2 = new File(file2Path);
try {
String file1MD5 = getFileMD5(file1);
String file2MD5 = getFileMD5(file2);
if (file1MD5.equals(file2MD5)) {
System.out.println("两个文件相同");
} else {
System.out.println("两个文件不同");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static String getFileMD5(File file) throws NoSuchAlgorithmException, IOException {
MessageDigest md5Digest = MessageDigest.getInstance("MD5");
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
int read = fis.read(buffer, 0, 1024);
while (read != -1) {
md5Digest.update(buffer, 0, read);
read = fis.read(buffer, 0, 1024);
}
fis.close();
byte[] md5Bytes = md5Digest.digest();
BigInteger bigInt = new BigInteger(1, md5Bytes);
String md5 = bigInt.toString(16);
while (md5.length() < 32) {
md5 = "0" + md5;
}
return md5;
}
}
```
在上述代码中,我们定义了一个`getFileMD5()`方法,用于计算文件的 MD5 摘要。这个方法首先获取一个`MessageDigest`实例,并指定要使用的哈希算法为 MD5。然后,它读取文件的内容,并通过`MessageDigest.update()`方法将其传递给哈希算法进行处理。最后,它调用`MessageDigest.digest()`方法获取最终的哈希值,并将其转换成十六进制字符串返回。
在`main()`方法中,我们分别计算了两个文件的 MD5 摘要,并比较它们是否相同。如果相同,则输出“两个文件相同”,否则输出“两个文件不同”。
阅读全文