¿Cómo puedo crear un file zip utilizando Objective C?

Estoy desarrollando una aplicación para iOS y tratando de cerrar el file que he creado en la aplicación, ¿hay alguna function incorporada capaz de hacer esto?

Como señaló Alex, respondí a esta pregunta señalando la categoría NSData aportada por los usuarios de la wiki Cocoadev. Esa categoría incluye methods para tratar datos comprimidos y comprimidos en una instancia de NSData (que se puede leer desde un file Zip o escribirse en uno). Esto debería ser todo lo que necesita para implementar el file comprimido que describe, siempre que pueda alimentar sus datos de file en una instancia de NSData.

Para ver un ejemplo de esta categoría en acción, consulte el código fuente de mi aplicación de iPhone, Molecules . Solo utilizo el método para extraer datos de un file gzipeado (en SLSMolecule + PDB.m), pero debería poder get los conceptos básicos de eso.

Definitivamente recomiendo Objective-Zip. Recientemente se mudó a https://github.com/flyingdolphinstudio/Objective-Zip :

Algunos ejemplos de su documentation:

Crear un file Zip:

ZipFile *zipFile= [[ZipFile alloc] initWithFileName:@"test.zip" mode:ZipFileModeCreate]; 

Agregar un file a un file zip:

 ZipWriteStream *stream= [zipFile writeFileInZipWithName:@"abc.txt" compressionLevel:ZipCompressionLevelBest]; [stream writeData:abcData]; [stream finishedWriting]; 

Leyendo un file desde un file zip:

 ZipFile *unzipFile= [[ZipFile alloc] initWithFileName:@"test.zip" mode:ZipFileModeUnzip]; [unzipFile goToFirstFileInZip]; ZipReadStream *read= [unzipFile readCurrentFileInZip]; NSMutableData *data= [[NSMutableData alloc] initWithLength:256]; int bytesRead= [read readDataWithBuffer:data]; [read finishedReading]; 

Primero descargue el ejemplo de Objective-zip de http://code.google.com/p/objective-zip/downloads/list

en este ejemplo, busque y copie tres carpetas Objective-Zip, MiniZip y ZLib en su proyecto

importar dos classs en su class .m "ZipFile.h" y "ZipWriteStream.h"

crear método de zip mi código es:

 -(IBAction)Zip{ self.fileManager = [NSFileManager defaultManager]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory , NSUserDomainMask, YES); NSString *ZipLibrary = [paths objectAtIndex:0]; NSString *fullPathToFile = [ZipLibrary stringByAppendingPathComponent:@"backUp.zip"]; //[self.fileManager createDirectoryAtPath:fullPathToFile attributes:nil]; //self.documentsDir = [paths objectAtIndex:0]; ZipFile *zipFile = [[ZipFile alloc]initWithFileName:fullPathToFile mode:ZipFileModeCreate]; NSError *error = nil; self.fileManager = [NSFileManager defaultManager]; NSArray *paths1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); self.documentsDir = [paths1 objectAtIndex:0]; NSArray *files = [[NSFileManager defaultManager]contentsOfDirectoryAtPath:self.documentsDir error:&error]; //for(NSString *filename in files){ for(int i = 0;i<files.count;i++){ id myArrayElement = [files objectAtIndex:i]; if([myArrayElement rangeOfString:@".png" ].location !=NSNotFound){ NSLog(@"add %@", myArrayElement); NSString *path = [self.documentsDir 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]; // NSLog(@"%d",data); [streem writeData:data]; [streem finishedWriting]; }else if([myArrayElement rangeOfString:@".txt" ].location !=NSNotFound) { NSString *path = [self.documentsDir 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]; // NSLog(@"%d",data); [streem writeData:data]; [streem finishedWriting]; } } [self testcsv]; [zipFile close]; } 

el file de su directory de documentos guardó los files .png y .txt comprimidos en la carpeta de la Biblioteca con backup.zip. Espero que esto ayude

No estoy seguro de si hay una function incorporada, pero tal vez podrías usar una biblioteca externa como InfoZip . O, alternativamente, podría intentar implementar su propia biblioteca zip, estoy bastante seguro de que la especificación de formatting Zip se puede encontrar en algún lugar de Internet.

RWendi