当前位置:首页 » 编程语言 » 文件md5java

文件md5java

发布时间: 2025-10-10 02:29:08

java 获取1G文件md5 要多久

我使用了部分取值的方式来提高MD5的计算速度,这样的时候,时间主要耗费在了IO中。如果是100K(换成500K也并没有提高执行的速度)取一个字符计算大约10秒以内。但是如果全部读取可能要60秒或者更多。对于大文件建议使用一些文件相关信息和部分文件内容做MD5.比如用文件长度和一定间隔取一些字节。

Ⅱ Java,如何获取文件的MD5值

package cdm;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.math.BigInteger;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.MessageDigest;
import org.apache.commons.codec.digest.*;
import org.apache.commons.io.IOUtils;
public class testMD5 {

public static String getMd5ByFile(File file) throws FileNotFoundException {
String value = null;
FileInputStream in = new FileInputStream(file);
try {
MappedByteBuffer byteBuffer = in.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, file.length());
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(byteBuffer);
BigInteger bi = new BigInteger(1, md5.digest());
value = bi.toString(16);
} catch (Exception e) {
e.printStackTrace();
} finally {
if(null != in) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return value;
}

public static void main(String[] args) throws IOException {

String path="E:\文件.zip";

String v = getMd5ByFile(new File(path));
System.out.println("MD5:"+v.toUpperCase());

FileInputStream fis= new FileInputStream(path);
String md5 = DigestUtils.md5Hex(IOUtils.toByteArray(fis));
IOUtils.closeQuietly(fis);
System.out.println("MD5:"+md5);

//System.out.println("MD5:"+DigestUtils.md5Hex("WANGQIUYUN"));
}
}

热点内容
安卓系统用什么麦唱歌 发布:2025-10-10 17:04:40 浏览:183
加密盾 发布:2025-10-10 16:42:35 浏览:223
无线网密码忘记了怎么办手机 发布:2025-10-10 16:41:17 浏览:5
行号和密码是什么 发布:2025-10-10 16:22:45 浏览:273
灵风三头脚本 发布:2025-10-10 16:19:03 浏览:413
sql辛研 发布:2025-10-10 16:04:39 浏览:214
怎么提高网站访问量 发布:2025-10-10 15:56:45 浏览:656
我的世界服务器维基 发布:2025-10-10 15:56:42 浏览:491
安卓手机网页无法打开是什么原因 发布:2025-10-10 15:38:59 浏览:846
怎么登陆局域网服务器 发布:2025-10-10 15:27:56 浏览:739