Estoy desarrollando una aplicación de iOS, y tratando de comprimir el archivo que he creado en la aplicación, ¿hay alguna función integrada capaz de hacer esto?¿Cómo puedo crear un archivo zip usando Objective C?
Respuesta
Como se señaló Alex, que respondieron a this question señalando la NSData category aportado por los usuarios de la wiki Cocoadev. Esa categoría incluye métodos para tratar con datos comprimidos y comprimidos en una instancia de NSData (que podría leerse desde un archivo Zip o escribirse en uno). Esto debería ser todo lo que necesita para implementar el archivo comprimido que describe, siempre y cuando pueda alimentar los datos de su archivo 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 uso el método para extraer datos de un archivo comprimido (en SLSMolecule + PDB.m), pero debería poder obtener los conceptos básicos de eso.
El enlace a la categoría NSData está roto. –
@GlennHowes - Está disponible en el archivo web aquí: http://web.archive.org/web/20100102154917/http://cocoadev.com/index.pl?NSDataCategory, pero edité mi pregunta anterior para incluir la totalidad de la categoría para preservarlo aquí. –
No estoy seguro si hay una función incorporada, pero quizás podría usar una biblioteca externa como InfoZip. O, como alternativa, podría intentar implementar su propia biblioteca zip, estoy bastante seguro de que la especificación del formato Zip se puede encontrar en algún lugar de Internet.
RWendi
que he hecho eso. No ciencia de cohetes, pero una buena dosis de tedio. –
primero que descargue ejemplo Objetivo-zip de http://code.google.com/p/objective-zip/downloads/list
en este ejemplo Buscar y copiar la carpeta de tres Objetivo-Zip, minizip y arrastre en ZLib a su proyecto
importar dos clases en que .m clase "ZipFile.h" y "ZipWriteStream.h"
crear método para comprimir 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];
}
su directorio de documentos guardados elemento .png y .txt pasar con velocidad en la carpeta de la biblioteca con backup.zip espero que esto es ayuda
¿Qué es self testcsv? – chostDevil
Sin duda, recomiendo Objetivo-Zip. Sólo recientemente se trasladó a https://github.com/flyingdolphinstudio/Objective-Zip:
Algunos ejemplos de su documentación:
Creación de un archivo Zip:
ZipFile *zipFile= [[ZipFile alloc] initWithFileName:@"test.zip" mode:ZipFileModeCreate];
Adición de un archivo a un archivo zip:
ZipWriteStream *stream= [zipFile writeFileInZipWithName:@"abc.txt" compressionLevel:ZipCompressionLevelBest];
[stream writeData:abcData];
[stream finishedWriting];
Lectura de un archivo desde un archivo 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];
Funciona muy bien en Xcode 5.1 y iOS 7.1 –
Recuerde cerrar el archivo por [zipfile cerrar]; –
- 1. ¿Cómo puedo crear un archivo Zip en Perl?
- 2. Cómo extraer un archivo ZIP en C#
- 3. Usando System.IO.Packaging para generar un archivo ZIP
- 4. Crear un archivo ZIP desde una aplicación Cocoa
- 5. Cómo descomprimir un archivo zip C#
- 6. Creando archivo Zip usando SharpZipLib
- 7. ¿Cómo crear un NSAutoreleasePool sin Objective-C?
- 8. ¿Cómo puedo extraer un solo archivo de un archivo ZIP utilizando Perl's Archive :: Zip?
- 9. Crear un archivo ZIP con Maven
- 10. Crear un archivo ZIP cifrado en Python
- 11. ¿Cómo crear y llenar un archivo ZIP utilizando ASP.NET?
- 12. Cómo crear un archivo Zip sin comprimir en Java
- 13. ¿Cómo puedo crear un archivo PST de Outlook usando .Net?
- 14. ¿Puedo crear un ARCHIVO * con mapa de memoria en C/Objective-C en iOS?
- 15. ¿Cómo extraer archivos de un archivo zip usando Lua?
- 16. ¿Crear un archivo zip de un generador en Python?
- 17. Objective-C crear un archivo de texto con una cadena
- 18. ¿Cómo crear un archivo .zip desde mi directorio de documentos?
- 19. Cómo puedo crear Objective-C Framework para iOS Aplicación
- 20. ¿descargar archivo zip usando java?
- 21. ¿Puedo crear una clase Objective-C en tiempo de ejecución desde un archivo de texto?
- 22. Lea un archivo zip dentro del archivo zip
- 23. Cómo crear un archivo usando Makefile
- 24. Crear archivo Zip desde múltiples archivos de memoria en C#
- 25. ¿Cómo encriptar un archivo .zip?
- 26. Android: Cómo descomprimir un archivo zip encriptado
- 27. Creando un archivo Zip programáticamente C++
- 28. ¿Cómo descargo un archivo zip en python usando urllib2?
- 29. ¿Cómo crear un archivo ZIP usando PHP y eliminarlo luego de que el usuario lo descargue?
- 30. ¿Cómo descargo el archivo zip en C#?
¿Para qué necesita esto? ¿Simplemente comprimiendo y enviando un archivo a alguna parte? Si es así, puede usar el zlib que ya está incluido. –
por confirmar su respuesta a [aquí] [1] [1]: http://stackoverflow.com/questions/7386695/how-to-zip-file/18740716#18740716 – Nirmalsinh