【问题标题】:Read in big files and create a checksum in java读入大文件并在java中创建校验和
【发布时间】:2014-09-06 12:26:01
【问题描述】:

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

所以我认为,“byte[] byteStream = Files.readAllBytes(path);”不适用于此。

您能告诉我实现目标的最佳方法是什么吗?

到目前为止我的代码:

        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);
            }

谢谢!

【问题讨论】:

  • 你是对的,问题是 Files.readAllBytes。您应该使用 InputStream 读取文件并即时计算摘要。请参阅 MrTux 发布的链接中的最佳答案。

标签: java


【解决方案1】:

您想使用MappedByteBuffer。这将允许您将整个文件视为在内存中,但让底层类来整理何时加载位以及何时摆脱它们。它在 CPU 时间和内存开销方面都非常有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-10
    • 2017-07-01
    • 2021-10-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    相关资源
    最近更新 更多