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

小億
278
2023-08-11 18:25:10
欄目: 編程語言

在Java中,獲取文件的MD5值的方法主要有以下幾種:

  1. 使用java.security.MessageDigest類:可以使用MessageDigest類提供的getInstance(“MD5”)方法獲取MD5算法的實(shí)例,然后通過update()方法更新數(shù)據(jù),最后通過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庫(kù):Apache Commons Codec庫(kù)提供了DigestUtils類,其中包含了獲取MD5值的靜態(tài)方法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類的靜態(tài)方法readAllBytes()讀取文件內(nèi)容,然后使用java.security.MessageDigest類進(jìn)行摘要計(jì)算。
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值,可以根據(jù)具體的需求選擇適合的方法。

0