OutOfMemoryError读取一个巨大的ZipFile

Ego*_*gor 2 java zip android out-of-memory zipfile

我正在尝试使用java.util.zipAPI 在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)
Run Code Online (Sandbox Code Playgroud)

我完全理解文件的大小超出了内存限制,但该问题是否有解决办法?提前致谢.

Pet*_*rey 6

我怀疑问题不是文件的大小,而是缓存Zip表条目时失败的条目数.

你自己的选择是;

  • 分解Zip,因此它没有这么多文件.
  • 获得更多记忆
  • 编写自己的库来阅读ZIP.