java 获取上传文件的MD5值
时间: 2023-08-13 10:03:08 浏览: 50
可以使用 Java 自带的 `MessageDigest` 类来计算文件的 MD5 值。下面是一个简单的示例代码:
```java
import java.io.FileInputStream;
import java.io.InputStream;
import java.security.DigestInputStream;
import java.security.MessageDigest;
public class MD5Util {
private static final char[] HEX_DIGITS = "0123456789abcdef".toCharArray();
public static String getMD5(File file) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
try (InputStream is = new FileInputStream(file)) {
DigestInputStream dis = new DigestInputStream(is, md);
byte[] buffer = new byte[1024];
while (dis.read(buffer) != -1) {
// 读取文件流,同时更新 MD5 值
}
}
byte[] digest = md.digest();
return toHexString(digest);
}
private static String toHexString(byte[] bytes) {
StringBuilder sb = new StringBuilder(bytes.length * 2);
for (byte b : bytes) {
sb.append(HEX_DIGITS[(b >> 4) & 0xf]).append(HEX_DIGITS[b & 0xf]);
}
return sb.toString();
}
}
```
在该代码中,首先获取 `MessageDigest` 实例,并指定算法为 MD5。然后,使用 `FileInputStream` 读取上传的文件流,并将其包装为 `DigestInputStream`,同时传入 `MessageDigest` 实例。这样,每次从输入流中读取数据时,`MessageDigest` 就会自动更新 MD5 值。最后,使用 `toHexString` 方法将 MD5 值转换为字符串输出。
然后,在你的上传文件处理代码中,调用 `getMD5` 方法,传入上传的文件对象即可获取到该文件的 MD5 值。