温馨提示×

JAVA中获取文件MD5值的方法有哪些

小亿
312
2023-08-11 18:25:10
栏目: 编程语言
Java开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在Java中,获取文件的MD5值的方法主要有以下几种:

  1. 使用java.security.MessageDigest类:可以使用MessageDigest类提供的getInstance(“MD5”)方法获取MD5算法的实例,然后通过update()方法更新数据,最后通过digest()方法获取摘要值。
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class FileMD5 {
public static String getFileMD5(File file) throws NoSuchAlgorithmException, IOException {
MessageDigest md5Digest = MessageDigest.getInstance("MD5");
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[8192];
int length;
while ((length = fis.read(buffer)) != -1) {
md5Digest.update(buffer, 0, length);
}
fis.close();
byte[] digest = md5Digest.digest();
StringBuilder sb = new StringBuilder();
for (byte b : digest) {
sb.append(String.format("%02x", b));
}
return sb.toString();
}
}
  1. 使用Apache Commons Codec库:Apache Commons Codec库提供了DigestUtils类,其中包含了获取MD5值的静态方法md5Hex()。
import org.apache.commons.codec.digest.DigestUtils;
public class FileMD5 {
public static String getFileMD5(File file) throws IOException {
return DigestUtils.md5Hex(new FileInputStream(file));
}
}
  1. 使用Java 7的NIO包:Java 7的NIO包中提供了获取文件MD5值的方式,使用java.nio.file包中的Files类的静态方法readAllBytes()读取文件内容,然后使用java.security.MessageDigest类进行摘要计算。
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class FileMD5 {
public static String getFileMD5(File file) throws NoSuchAlgorithmException, IOException {
MessageDigest md5Digest = MessageDigest.getInstance("MD5");
Path filePath = Paths.get(file.getAbsolutePath());
byte[] fileBytes = Files.readAllBytes(filePath);
byte[] digest = md5Digest.digest(fileBytes);
StringBuilder sb = new StringBuilder();
for (byte b : digest) {
sb.append(String.format("%02x", b));
}
return sb.toString();
}
}

这些方法都可以获取文件的MD5值,可以根据具体的需求选择适合的方法。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:java中如何获取文件MD5值

0