2009-11-13 36 views
10

我发现了几个库(LiteZipZipArchive),允许在iPhone上解压文件。但他们都需要输入作为文件。是否有一个库允许直接解压NSData包含zip存档数据而不写入临时文件?
我试着采用上面提到的库,但迄今为止没有成功。解压NSData不带临时文件

+1

为什么你不想使用临时文件?你想要什么形式的未压缩数据?你的NSData中有一些实际的压缩数据吗? – 2009-11-13 12:29:46

+0

我有加密的zip文件。我在内存中解密到NSData,然后直接解压。 – Vladimir 2009-11-13 12:44:01

+0

我曾经写过你需要的东西(除了加密支持)。这很容易,几个小时后就可以实现。不幸的是,我再也无法访问代码。那么为什么不从头开始编写一个(使用zlib)呢? ZIP文件是一种相当简单的文件格式。 – Codo 2010-08-22 14:32:02

回答

0

据我所知,zip格式分别存储文件,每个存储的文件使用压缩算法(通常是DEFLATE算法)进行压缩。

如果你只在解压缩的数据感兴趣这是使用deflate算法这zlib addition to NSDataGoogle Toolbox For Mac
它不需要临时文件,你可以使用压缩。

+1

由于zip压缩文件中的文件是单独压缩存储的,并且在原始文件夹层次结构中,应该可以通过传递路径(相对于zip压缩文件的根目录)来提取NSData对象,对吗? – avocade 2010-06-08 00:15:33

1

this answerthis question,我指出了CocoaDev wiki category on NSData,它增加了对该类的zip/unzip支持。这会让你在记忆中完全做到这一点。

+1

这个类别增加了gzip/zlib支持,而不是实际的zip格式(顺便说一下,它不能解压缩到一个单独的NSData对象,它不能代表文件/目录结构)。 – 2009-11-13 14:02:39