0

我想使用 ZipKit 压缩文件夹?

我似乎无法找到有关 ZipKit 库中函数使用的良好文档。有人可以解释文件夹压缩的方法吗?

ZKFileArchive *archive = [ZKFileArchive archiveWithArchivePath:filePath];
[archive deflateDirectory:param1 relativeToPath:param2 usingResourceFork:NO];

param1和param2需要传递什么??这里的函数调用我没看懂?

如果有人可以为它发布一个例子会很棒吗?

谢谢!

4

2 回答 2

2

查看这个相关问题的答案,这里有一个很好的例子。

您的 param1 是要归档的文件夹(带有路径),相对路径可以是父文件夹。

NSString *zipFilePath = @"/Documents/zipped.zip";
ZKFileArchive *archive = [ZKFileArchive archiveWithArchivePath:zipFilePath];
NSInteger result = [archive deflateDirectory:@"/Documents/myfolder" relativeToPath:@"/Documents" usingResourceFork:NO];

如果 ZipKit 有比它所拥有的有限信息更好的文档,那就太好了。

于 2013-05-09T20:27:09.253 回答
1

我创建了以下类别方法来NSFileManager使用ZipKit.

- (BOOL)zipContentsOfDirectoryAtPath:(NSString *)directory toPath:(NSString *)filename recursive:(BOOL)recursive {
    // If there is already a file at the destination, delete it
    if ([self fileExistsAtPath:filename]) {
        [self removeItemAtPath:filename error:nil];
    }

    @try {
        ZKFileArchive *archive = [ZKFileArchive archiveWithArchivePath:filename];
        NSInteger result = [archive deflateDirectory:directory relativeToPath:directory usingResourceFork:NO];

        return result == zkSucceeded;
    }
    @catch (NSException *exception) {
        if ([self fileExistsAtPath:filename]) {
            [self removeItemAtPath:filename error:nil];
        }
    }

    return NO;
}

directory参数是您希望压缩的目录(及其内容)的路径。该filename参数是您想要的结果 zip 文件的路径。

于 2013-05-09T20:27:25.273 回答