在java中读取大文件并创建校验和

在java中读取大文件并创建校验和,java,Java,我想创建大文件的哈希校验和。不幸的是,Netbeans显示了一个错误: 线程thread-3 java.lang.OutOfMemoryError中出现异常:所需数组大小太大 所以我认为,byte[]byteStream=Files.readAllBytes路径;他不为这个工作 你能告诉我达到目标的最好方法是什么吗 到目前为止,我的代码是: for (Path path : ArrayOfFilePathes) { byte[] byteStream =

我想创建大文件的哈希校验和。不幸的是,Netbeans显示了一个错误: 线程thread-3 java.lang.OutOfMemoryError中出现异常:所需数组大小太大

所以我认为,byte[]byteStream=Files.readAllBytes路径;他不为这个工作

你能告诉我达到目标的最好方法是什么吗

到目前为止,我的代码是:

        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张贴的顶部答案。