我正在尝试使用 java.util.zip
API 在 Android 中打开一个大的(大约 1 GiB)zip 文件并收到以下错误:
java.lang.OutOfMemoryError
at java.util.HashMap.makeTable(HashMap.java:555)
at java.util.HashMap.doubleCapacity(HashMap.java:575)
at java.util.HashMap.put(HashMap.java:405)
at java.util.zip.ZipFile.readCentralDir(ZipFile.java:366)
at java.util.zip.ZipFile.<init>(ZipFile.java:132)
at java.util.zip.ZipFile.<init>(ZipFile.java:103)
at com.foo.bar.zip.archive.ZipArchive.<init>(ZipArchive.java:44)
我完全理解文件的大小大大超过了内存限制,但是这个问题有什么解决方法吗?提前致谢。
最佳答案
我怀疑问题不是文件的大小,而是条目的数量,因为它在缓存 Zip 表条目时失败。
你自己的选择是;
- 分解 Zip,这样里面就没有那么多文件了。
- 获得更多内存
- 编写您自己的库来读取 ZIP。
关于java - OutOfMemoryError 读取一个巨大的 ZipFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13010546/