1. 概述

校验和是一种字符序列,用于唯一标识一个文件。它最常用于验证文件副本是否与原始文件完全相同。

在这个简短的教程中,我们将学习如何在Java中生成文件的MD5校验和

2. 使用MessageDigest

我们可以在java.security包中的MessageDigest类中轻松地生成文件的MD5校验和:

byte[] data = Files.readAllBytes(Paths.get(filePath));
byte[] hash = MessageDigest.getInstance("MD5").digest(data);
String checksum = new BigInteger(1, hash).toString(16);

3. 使用Apache Commons Codec

我们还可以使用Apache Commons Codec库中的DigestUtils类来达到同样的目的。

让我们在pom.xml文件中添加一个依赖:

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.15</version>
</dependency>

现在,我们可以简单地使用md5Hex()方法获取文件的MD5校验和:

try (InputStream is = Files.newInputStream(Paths.get(filePath))) {
    String checksum = DigestUtils.md5Hex(is);
    // ....
}

别忘了使用try-with-resources,这样我们就不用担心关闭流了。

4. 使用Guava

最后,我们可以使用Guava的ByteSource对象的hash()方法:

File file = new File(filePath);
ByteSource byteSource = com.google.common.io.Files.asByteSource(file);
HashCode hc = byteSource.hash(Hashing.md5());
String checksum = hc.toString();

5. 总结

在这篇快速教程中,我们展示了在Java中生成文件MD5校验和的不同方法

如往常一样,本文的示例代码可以在GitHub上找到。