从zip压缩文件中提取压缩文件而不将整个文件加载到内存中

问题描述:

有没有办法在Adobe AIR中从压缩文件中提取单个文件?从zip压缩文件中提取压缩文件而不将整个文件加载到内存中

我使用NoChumps zip库从zip中提取文件。在这个库中,整个IDataStream被加载到内存中,然后你可以很容易地提取文件条目。如果邮政编码为5到10MB,则不存在任何问题。但是,当zip是80MB,其中有80MB被加载到内存中。这会导致应用在移动设备上崩溃并运行缓慢。根据zip规范,

“ZIP文件通过位于文件末尾的*目录进行标识,这允许附加新文件。该目录存储条目的名称列表(文件或目录),以及其他关于该条目的元数据,以及指向ZIP文件的偏移量,指向实际的条目数据。“

此外,我没有控制zip文件的大小,但大多数平均值是60到100MB。里面的文件是〜4MB。

这是不可能的弯曲,但可能AIR。 AIR获得了随机访问的File类,允许读取zip文件列表。我使用了Coltware的airxzip,它对我很好。创建ZipFileReader,打开您的zip文件,请致电getEntries(),找到您需要的条目并致电reader.unzip(entry)

+0

太棒了!谢谢! – 2011-03-11 11:36:56

快速回答 - 不,这是不可能的。

长的答案 - 你需要使用zlib的像一个图书馆,有一个安装在机器上的辅助程序还

+0

好(去角落crys):( – 2011-03-11 01:17:29