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

1.2*_*tts 5 apache-flex air zip

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

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

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

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

alx*_*lxx 2

这对于 Flex 来说是不可能的,但对于 AIR 来说是可能的。AIR 具有具有随机访问功能的 File 类,它允许读取 zip 文件列表。我使用了 Coltware 的airxzip,它对我很有帮助。创建ZipFileReader、打开您的 zip 文件、调用getEntries()、找到您需要的条目并调用reader.unzip(entry)