首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android写大文件OutofMemory出错

Android写大文件OutofMemory出错
EN

Stack Overflow用户
提问于 2015-09-04 20:19:03
回答 1查看 215关注 0票数 1

我正在尝试加密一个500MB的大文件,但是我的代码抛出了一个内存不足的错误,对于50MB以下的小文件,代码工作正常。我正在使用名为JNCryptor的第三方库进行加密,请看一下我的代码,如果有任何错误,请纠正我。提前谢谢。

代码语言:javascript
复制
public void encrypt() {
    String file = Environment.getExternalStorageDirectory() + "/sai/ravi_enc.exe";
    byte[] filedata = null;
    try {
        filedata = IOUtils.toByteArray(new FileInputStream(file));
    } catch (IOException e) {
        e.printStackTrace();
    }

    JNCryptor cryptor = new AES256JNCryptor();
    String password = "123456789";

    try {
        byte[] ciphertext = cryptor.decryptData(filedata, password.toCharArray());
        String Outfile = Environment.getExternalStorageDirectory() + "/sai/ravi_dec.exe";
        writeFile(ciphertext, Outfile);
        System.out.println("Done");
    } catch (CryptorException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public void writeFile(byte[] data, String fileName) throws IOException {
    FileOutputStream out = new FileOutputStream(fileName);
    out.write(data);
    out.close();
}
EN

回答 1

Stack Overflow用户

发布于 2015-09-04 20:30:15

这取决于JNCryptor来很好地管理内存,特别是在它使用临时缓冲区的情况下。最好在流上工作而不是在缓冲区上工作。只是为了测试,如果你直接把fileData写到你的outFile中,你会得到OutOfMemoryError吗?

代码语言:javascript
复制
writeFile(filedata, Outfile);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32397907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档