在Objective C中压缩文件夹

时间:2010-11-21 05:30:26

标签: objective-c macos zip

是否有任何库在Objective C中工作以压缩整个文件夹(并解压缩它们)?我通过搜索看了一些,但看起来他们需要单独添加文件,其中一些据说会崩溃......

看起来这个库可能有效: http://bitbucket.org/dchest/osxzip/overview

但我不知道它是否支持文件夹。任何人都知道它是否有或任何其他库支持压缩文件夹?甚至用于与命令行libz交互的示例代码对我来说都没问题......

2 个答案:

答案 0 :(得分:1)

您可以使用NSTask运行命令行ditto程序。请务必查看ditto手册页以获取正确的标记组合,以获得与Finder兼容的压缩文件。

答案 1 :(得分:1)

根据这个例子:http://www.raywenderlich.com/1948/how-integrate-itunes-file-sharing-with-your-ios-app你可以用Zipped数据得到一个NSData对象然后用[data writeToFile ....]

写它
- (NSData *)exportToNSData {
    NSError *error;
    NSURL *url = [NSURL fileURLWithPath:_docPath];
    NSFileWrapper *dirWrapper = [[[NSFileWrapper alloc] initWithURL:url options:0 error:&error] autorelease];
    if (dirWrapper == nil) {
        NSLog(@"Error creating directory wrapper: %@", error.localizedDescription);
        return nil;
    }   

    NSData *dirData = [dirWrapper serializedRepresentation];
    NSData *gzData = [dirData gzipDeflate];    
    return gzData;
}