在java中读取大文件并创建校验和
我想创建大文件的哈希校验和。不幸的是,Netbeans显示了一个错误: 线程thread-3 java.lang.OutOfMemoryError中出现异常:所需数组大小太大 所以我认为,byte[]byteStream=Files.readAllBytes路径;他不为这个工作 你能告诉我达到目标的最好方法是什么吗 到目前为止,我的代码是:在java中读取大文件并创建校验和,java,Java,我想创建大文件的哈希校验和。不幸的是,Netbeans显示了一个错误: 线程thread-3 java.lang.OutOfMemoryError中出现异常:所需数组大小太大 所以我认为,byte[]byteStream=Files.readAllBytes路径;他不为这个工作 你能告诉我达到目标的最好方法是什么吗 到目前为止,我的代码是: for (Path path : ArrayOfFilePathes) { byte[] byteStream =
for (Path path : ArrayOfFilePathes) {
byte[] byteStream = Files.readAllBytes( path );
if ( GUI.bMd5Selected == true ) {
checksume = "MD5";
string = DigestUtils.md5Hex( byteStream );
}else{
checksume = "Sha256";
string = DigestUtils.sha256Hex(byteStream);
}
谢谢大家! 您想使用MappedByteBuffer。这将允许您将整个文件视为内存中的文件,但让底层类自行决定何时加载位以及何时删除位。它在CPU时间和内存开销方面都非常有效。您的可能重复项是正确的问题是Files.readAllBytes。您应该使用InputStream读取文件并动态计算摘要。见链接MrTux张贴的顶部答案。