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

时间:2011-03-10 21:57:06

标签: flex air zip

有没有办法从Adobe AIR中的zip文件中提取单个文件?

我正在使用NoChumps zip库从zip中提取文件。在这个库中,整个IDataStream被加载到内存中,之后您可以轻松地提取文件条目。如果拉链为5到10MB,则没有问题。但是当zip为80MB时,许多都是80MB,将80MB加载到内存中。这会导致应用程序崩溃并在移动设备上运行缓慢。根据zip规范,

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

另外,我无法控制zip文件的大小,但大多数平均值是60到100MB。里面的文件大约是4MB。

2 个答案:

答案 0 :(得分:2)

Flex不可能,但AIR可能。 AIR获得了具有随机访问权限的File类,允许读取zip文件列表。我使用了Coltware的airxzip,它对我很有帮助。创建ZipFileReader,打开您的zip文件,致电getEntries(),找到您需要的条目,然后致电reader.unzip(entry)

答案 1 :(得分:1)

快速回答 - 不可能。

答案很长 - 你需要制作一个使用像zLib这样的库的辅助程序并在机器上安装它