从文档目录中的文件夹创建 ZIP 文件 - Objective C (ARC)

Posted

技术标签:

【中文标题】从文档目录中的文件夹创建 ZIP 文件 - Objective C (ARC)【英文标题】:Creating a ZIP file from a folder in documents directory - Objective C (ARC) 【发布时间】:2012-07-25 12:15:03 【问题描述】:

我有一个使用 ARC 开发的 iPhone 应用程序。我的文档目录中有一个文件夹,其中包含一堆图像,我需要将其压缩并通过电子邮件发送。我的项目使用 ARC。

有没有人有任何对我有帮助的示例代码/资源链接?

我一直在网上搜索,发现与 ARC 不兼容 - 即使它声称是。

【问题讨论】:

您知道可以逐个文件关闭 ARC,对吗?因此,如果您有喜欢的非 ARC 代码,您仍然可以在 ARC 项目中使用它。 ARC不是全有或全无。它是每个文件的编译器选项。 ***.com/questions/6646052/… 为了进一步澄清,如果您有一个构建这样一个 Objective-C 库的 Xcode 项目,并且它不是 ARC,那么您可以将该项目包含在您的项目中并使用该库,无论它是否是 ARC与否。 哦,不,我不知道,干杯。 也许可以看看这个创建 ZIP 文件的内置方法:***.com/a/32723162 【参考方案1】:

从此链接http://code.google.com/p/objective-zip/downloads/list (Objective-zip) 下载 Objective-Zip、MiniZip 和 ZLib 并将其拖动到您的项目中。导入文件: ZipFile.h, ZipException.h, FileInZipInfo.h, ZipWriteStream.h, ZipReadStream.h, zlib.h

使用此代码。请看下面:

NSString *stringPath1 = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]];
    NSString *FileName=[stringPath1 stringByAppendingPathComponent:@"Your file name"];


    NSString *stringPath=[stringPath1 stringByAppendingPathComponent:[@"Your file name" stringByAppendingFormat:@".zip"]];
    NSArray *files = [[NSFileManager defaultManager]contentsOfDirectoryAtPath:FileName error:&error];
    ZipFile *zipFile = [[ZipFile alloc]initWithFileName:stringPath mode:ZipFileModeCreate];

    for(int i = 0;i<files.count;i++)

        id myArrayElement = [files  objectAtIndex:i];
        NSLog(@"add %@", myArrayElement);

        NSString *path = [FileName stringByAppendingPathComponent:myArrayElement];
        NSDictionary *attributes = [[NSFileManager defaultManager]attributesOfItemAtPath:path error:&error];
        NSDate *Date = [attributes objectForKey:NSFileCreationDate];

        ZipWriteStream *streem = [zipFile writeFileInZipWithName:myArrayElement fileDate:Date compressionLevel:ZipCompressionLevelBest];
        NSData *data = [NSData dataWithContentsOfFile:path];
        [streem writeData:data];
        [streem finishedWriting];
    

    [zipFile close];

【讨论】:

抱歉,您提供的链接现在已失效。 找到该项目的有效链接:github.com/flyingdolphinstudio/Objective-Zip

以上是关于从文档目录中的文件夹创建 ZIP 文件 - Objective C (ARC)的主要内容,如果未能解决你的问题,请参考以下文章

obj 目录中的 *.dll.licenses 文件不是使用 TeamCity 中的 msbuild 创建的

Python zipfile 库 - 从一个目录创建一个仅包含 .pdf 和 .xml 文件的 zip

Zlib和Minizip - 如何将新目录添加到.zip文件

python将zip文件解压到指定目录

使用路径从文件内部存储目录中的 zip 获取文件

如何使用 python 从位于同一目录中的多个 zip 文件夹中读取 csv 文件?