FileUtils.getFileMD5 oom
See original GitHub issueFileUtils.getFileMD5 处理大文件,报内存溢出。
建议EncryptUtils.encryptMD5File中使用:
public static byte[] encryptMD5File(File file) { if (file == null) return null; FileInputStream fis = null; DigestInputStream digestInputStream = null; try { MessageDigest md = MessageDigest.getInstance("MD5"); fis = new FileInputStream(file); digestInputStream = new DigestInputStream(fis, md); byte[] buffer = new byte[256 * 1024]; while (digestInputStream.read(buffer) > 0) ; // 获取最终的MessageDigest md = digestInputStream.getMessageDigest(); return md.digest(); } catch (NoSuchAlgorithmException | IOException e) { e.printStackTrace(); return null; } finally { CloseUtils.closeIO(fis); } }
Issue Analytics
- State:
- Created 7 years ago
- Comments:7 (5 by maintainers)
Top GitHub Comments
我几百兆,几个G的都测了,就这个digestInputStream 最快,已更新
这个只依赖java层,所以单元测试一下就可以了,内存这个我没有具体看,但这个是缓存流里面的,应该可以