Cordova在不耗尽内存的情况下计算大文件的sha1哈希

我正在尝试使用sha1哈希作为检查文件更改的方法,问题是当尝试计算较大文件(50-100MB)的哈希值时,应用程序会抛出致命异常,因为它内存不足。

版本信息:

  • 科尔多瓦3.5
  • Android 4.2.2
  • Galaxy Tab 2
  • org.apache.cordova.file 1.1.0
  • CryptoJS最新?
  • lib-typedarrays(用于CryptoJS的模块)最新吗?
  • qjs最新

这是即时通讯使用的内容:

function _getFileChecksum(file){

    var deferred = Q.defer();
    if(typeof CryptoJS === 'undefined'){
        if(DEBUG){
            console.log('CryptoJS is required.');
        }
        return deferred.reject(new Error('CryptoJS is required.'));
    }

    var reader = new FileReader();

    reader.onload = function (evt) {
        if(DEBUG){
            console.log('_getFileChecksum: reader finished loading');
        }
        var arrayBuffer = evt.target.result;
        var wordArray = CryptoJS.lib.WordArray.create(arrayBuffer);
        var hash = CryptoJS.SHA1(wordArray);
        if(DEBUG){
            console.log('_getFileChecksum: hash = '+hash);
        }
        deferred.resolve(hash);
    };
    reader.onerror = function(anError){
        if(DEBUG){
            console.log('_getFileChecksum: reader error');
        }
        deferred.reject(anError);
    };
    reader.readAsArrayBuffer(file);

    return deferred.promise;
}

现在,这对于较小的文件就可以了。但是,当我到达较大的那时,那就是问题所在。有谁知道我将如何计算sha1具有大文件而又不会耗尽应用程序中的内存?

我可以通过添加来解决内存不足的问题

android:largeHeap="true"

我在AndroidManifest.xml<application />标签

<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:largeHeap="true">

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

OpenSSL SHA1哈希不匹配

来自分类Dev

MySQL SHA1哈希不匹配

来自分类Dev

如何将多个大型data.table对象附加到单个data.table中,并在不耗尽内存的情况下快速导出到csv?

来自分类Dev

在C#中计算哈希SHA1

来自分类Dev

如何在不将完整文件加载到内存的情况下将巨大文件插入BLOB(Oracle)?

来自分类Dev

md5 / sha1散列大文件

来自分类Dev

R是否能够在不将整个文件放入RAM的情况下计算大文件上的列联表?

来自分类Dev

如何在不耗尽垃圾收集器的情况下将非常大的元素保留在内存中?

来自分类Dev

bash-在不创建文件的情况下哈希变量的二进制内容

来自分类Dev

在没有System.Security.Cryptography的情况下计算SHA256哈希

来自分类Dev

需要计算c#中存储在Azure存储中的文件的SHA1哈希

来自分类Dev

如何在不耗尽内存的情况下在Django中迭代大型表?

来自分类Dev

Deja-dup:无效数据-文件的SHA1哈希不匹配

来自分类Dev

如何在不压缩的情况下将大文件夹存储在单个文件中

来自分类Dev

如何在内存不耗尽的情况下读取大型CSV文件?

来自分类Dev

Deja-dup:无效数据-文件的SHA1哈希不匹配

来自分类Dev

如何在不使用大量磁盘空间的情况下创建tar归档文件中文件的sha1校验和

来自分类Dev

如何在不使用大量磁盘空间的情况下,在busybox上的tar归档文件中创建文件的sha1校验和

来自分类Dev

如何检查文件的SHA1哈希?

来自分类Dev

R是否可以在不将整个文件放入RAM的情况下计算大文件上的列联表?

来自分类Dev

如何在不耗尽内存的情况下读取tsv文件并将其存储为hdf5?

来自分类Dev

在不处理文件的情况下计算Java中的空格,制表符和换行

来自分类Dev

在没有System.Security.Cryptography的情况下计算SHA256哈希

来自分类Dev

需要计算c#中存储在Azure存储中的文件的SHA1哈希

来自分类Dev

SHA1不匹配

来自分类Dev

SHA1 哈希澄清

来自分类Dev

如何在不耗尽内存的情况下尽可能多地并行化我的 macOS 应用程序任务?

来自分类Dev

如何在不耗尽内存限制的情况下从 Web 服务获取数据到数组中然后存储在数据库中?

来自分类Dev

python - 如何在不耗尽python内存的情况下遍历大文件?

Related 相关文章

  1. 1

    OpenSSL SHA1哈希不匹配

  2. 2

    MySQL SHA1哈希不匹配

  3. 3

    如何将多个大型data.table对象附加到单个data.table中,并在不耗尽内存的情况下快速导出到csv?

  4. 4

    在C#中计算哈希SHA1

  5. 5

    如何在不将完整文件加载到内存的情况下将巨大文件插入BLOB(Oracle)?

  6. 6

    md5 / sha1散列大文件

  7. 7

    R是否能够在不将整个文件放入RAM的情况下计算大文件上的列联表?

  8. 8

    如何在不耗尽垃圾收集器的情况下将非常大的元素保留在内存中?

  9. 9

    bash-在不创建文件的情况下哈希变量的二进制内容

  10. 10

    在没有System.Security.Cryptography的情况下计算SHA256哈希

  11. 11

    需要计算c#中存储在Azure存储中的文件的SHA1哈希

  12. 12

    如何在不耗尽内存的情况下在Django中迭代大型表?

  13. 13

    Deja-dup:无效数据-文件的SHA1哈希不匹配

  14. 14

    如何在不压缩的情况下将大文件夹存储在单个文件中

  15. 15

    如何在内存不耗尽的情况下读取大型CSV文件?

  16. 16

    Deja-dup:无效数据-文件的SHA1哈希不匹配

  17. 17

    如何在不使用大量磁盘空间的情况下创建tar归档文件中文件的sha1校验和

  18. 18

    如何在不使用大量磁盘空间的情况下,在busybox上的tar归档文件中创建文件的sha1校验和

  19. 19

    如何检查文件的SHA1哈希?

  20. 20

    R是否可以在不将整个文件放入RAM的情况下计算大文件上的列联表?

  21. 21

    如何在不耗尽内存的情况下读取tsv文件并将其存储为hdf5?

  22. 22

    在不处理文件的情况下计算Java中的空格,制表符和换行

  23. 23

    在没有System.Security.Cryptography的情况下计算SHA256哈希

  24. 24

    需要计算c#中存储在Azure存储中的文件的SHA1哈希

  25. 25

    SHA1不匹配

  26. 26

    SHA1 哈希澄清

  27. 27

    如何在不耗尽内存的情况下尽可能多地并行化我的 macOS 应用程序任务?

  28. 28

    如何在不耗尽内存限制的情况下从 Web 服务获取数据到数组中然后存储在数据库中?

  29. 29

    python - 如何在不耗尽python内存的情况下遍历大文件?

热门标签

归档