详解JAVA中获取文件MD5值的四种方法


在Java中,可以使用以下四种方法来获取文件的MD5值:
1. 使用java.security.MessageDigest类:可以使用该类的getInstance方法来获取MD5算法的实例,并使用update方法来更新消息摘要。最后,可以使用digest方法来获取文件的MD5值。
```java
import java.io.FileInputStream;
import java.security.MessageDigest;
public class FileMD5 {
public static void main(String[] args) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
FileInputStream fis = new FileInputStream("path/to/file");
byte[] dataBytes = new byte[1024];
int nread = 0;
while ((nread = fis.read(dataBytes)) != -1) {
md.update(dataBytes, 0, nread);
}
byte[] mdbytes = md.digest();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < mdbytes.length; i++) {
sb.append(Integer.toString((mdbytes[i] & 0xff) + 0x100, 16).substring(1));
}
System.out.println("MD5: " + sb.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
2. 使用Apachemons Codec库:该库提供了一个DigestUtils类,可以使用它的md5Hex方法来获取文件的MD5值。
```java
import org.apachemons.codec.digest.DigestUtils;
import java.io.FileInputStream;
import java.io.IOException;
public class FileMD5 {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("path/to/file");
String md5 = DigestUtils.md5Hex(fis);
System.out.println("MD5: " + md5);
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
3. 使用Java 7的java.nio.file包:可以使用Files类的get方法来获取文件的MD5值。
```java
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.MessageDigest;
public class FileMD5 {
public static void main(String[] args) {
try {
Path path = Paths.get("path/to/file");
byte[] dataBytes = Files.readAllBytes(path);
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] mdbytes = md.digest(dataBytes);
StringBuffer sb = new StringBuffer();
for (int i = 0; i < mdbytes.length; i++) {
sb.append(Integer.toString((mdbytes[i] & 0xff) + 0x100, 16).substring(1));
}
System.out.println("MD5: " + sb.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
4. 使用第三方库:可以使用第三方库如Guava或Apachemons IO来获取文件的MD5值。
使用Guava:
```java
import.googlemon.hash.HashCode;
import.googlemon.hash.Hashing;
import.googlemon.io.Files;
import java.io.File;
import java.io.IOException;
public class FileMD5 {
public static void main(String[] args) {
try {
File file = new File("path/to/file");
HashCode md5 = Files.hash(file, Hashing.md5());
System.out.println("MD5: " + md5.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
使用Apachemons IO:
```java
import org.apachemons.codec.digest.DigestUtils;
import org.apachemons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class FileMD5 {
public static void main(String[] args) {
try {
File file = new File("path/to/file");
String md5 = DigestUtils.md5Hex(FileUtils.readFileToByteArray(file));
System.out.println("MD5: " + md5);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
以上是在Java中获取文件的MD5值的四种方法。可以根据实际情况选择合适的方法来使用。


上一篇:mysql中union和union all的使用及注意事项

下一篇:Android canvas drawBitmap方法详解及实例


Copyright © 2002-2019 测速网 www.inhv.cn 皖ICP备2023010105号
测速城市 测速地区 测速街道 网速测试城市 网速测试地区 网速测试街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!

热门搜索 城市网站建设 地区网站制作 街道网页设计 大写数字 热点城市 热点地区 热点街道 热点时间 房贷计算器