How to zip folders in iPhone SDK?

后端 未结 5 379
情话喂你
情话喂你 2020-12-09 06:45

In my Application,I am taking screenshots of image View and then I am saving those screen shots in document folder of the application.Now I want to Email all those images wi

相关标签:
5条回答
  • 2020-12-09 06:49

    Easy mode: add ZipArchive to your project then:

    NSString* zip = ...;
    NSString* dir = ...;
    [SSZipArchive createZipFileAtPath: zip withContentsOfDirectory: dir];
    
    0 讨论(0)
  • 2020-12-09 06:52

    I have used this code to create a zip file of the documents directory of my app and it worked

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docDirectory = [paths objectAtIndex:0];
    BOOL isDir=NO;
    NSArray *subpaths;
    NSString *exportPath = docDirectory;
    NSFileManager *fileManager = [NSFileManager defaultManager];    
    if ([fileManager fileExistsAtPath:exportPath isDirectory:&isDir] && isDir){
        subpaths = [fileManager subpathsAtPath:exportPath];
    }
    
    NSString *archivePath = [docDirectory stringByAppendingString:@"/test.zip"];
    
    ZipArchive *archiver = [[ZipArchive alloc] init];
    [archiver CreateZipFile2:archivePath];
    for(NSString *path in subpaths)
    {
        NSString *longPath = [exportPath stringByAppendingPathComponent:path];
        if([fileManager fileExistsAtPath:longPath isDirectory:&isDir] && !isDir)
        {
            [archiver addFileToZip:longPath newname:path];      
        }
    }
    
    if([archiver CloseZipFile2])
        NSLog(@"Success");
    else
        NSLog(@"Fail");
    
    0 讨论(0)
  • 2020-12-09 07:00

    I've used ZipArchive with success in the past.

    It's pretty ligthweight and simple to use, supports password protection, multiple files inside a ZIP, as well as compress & decompress.

    The basic usage is:

    NSString *filepath = [[NSBundle mainBundle] pathForResource:@"ZipFileName" ofType:@"zip"];
    ZipArchive *zipArchive = [[ZipArchive alloc] init];
    [zipArchive UnzipOpenFile:filepath Password:@"xxxxxx"];
    [zipArchive UnzipFileTo:{pathToDirectory} overWrite:YES];
    [zipArchive UnzipCloseFile];
    [zipArchive release];
    

    This is for unzipping a folder/file. To zip folders is equally easy. To zip a file (or a fodler)

               BOOL ret = [zip CreateZipFile2:l_zipfile];
                // OR
                BOOL ret = [zip CreateZipFile2:l_zipfile Password:@"your password"]; //
                //if the Password is empty, will get the same effect as [zip CreateZipFile2:l_zipfile];
    
                ret = [zip addFileToZip:l_photo newname:@"photo.jpg"];
                if( ![zip CloseZipFile2] )
                {
                        // error handler here
                }
                [zip release];
    

    I have heard about ObjectiveC-Zip also.

    0 讨论(0)
  • 2020-12-09 07:08

    To create a zip file you can use ZipArchive Download the source code and add it to your project, add also libz.x.dylib (take a look at wiki).

    Then in your header file add: #import "ZipArchive/ZipArchive.h"

    To create a zip file is simple, just use the following code:

    BOOL ret = [zip CreateZipFile2:l_zipfile];
    // OR
    BOOL ret = [zip CreateZipFile2:l_zipfile Password:@"your password"]; //
    //if the Password is empty, will get the same effect as [zip CreateZipFile2:l_zipfile];
    ret = [zip addFileToZip:l_photo newname:@"photo.jpg"];
          if( ![zip CloseZipFile2] )
          {
          // error handler here
          }
          [zip release];
    
    0 讨论(0)
  • 2020-12-09 07:11

    ZipArchive is an Objective-C class to compress or uncompress zip files, which is base on open source code "MiniZip".

    It can be used for iPhone application development, and cocoa on Mac OSX as well.

    see this : http://code.google.com/p/ziparchive/downloads/list

    0 讨论(0)
提交回复
热议问题