2020-09-30 La descompresión de SSZipArchive es fácil de usar

 

 

SSZipArchive descomprime la dirección de demostración oficial https://github.com/ZipArchive/ZipArchive

El siguiente artículo registra principalmente la función de descompresión al ver la demostración.

 

1. Compresión

  _zipPath = [self tempZipPath];

- (NSString *)tempZipPath {

    NSString *path = [NSString stringWithFormat:@"%@/%@.zip",

                      NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0],

                      [NSUUID UUID].UUIDString];

    return path;

}

    NSLog(@"Zip path: %@", _zipPath);

打印结果:Zip path: /Users/admin/Library/Developer/CoreSimulator/Devices/3E9F0B21-D9F9-4CB0-B9DC-DC7BEDC3DBFB/data/Containers/Data/Application/CE1DD483-E455-48C1-873F-4D83EE74920B/Library/Caches/3DCF2C1C-1C72-499F-AB28-C7F240B5FA09.zip

Puede ver que la ruta Zip "consiste en la ruta de la zona de pruebas y [NSUUID UUID] .UUIDString]". La parte /Users/admin/.../Library/Caches es la ruta de la caja de arena y la  última parte es el UUID. Al mismo tiempo, también vi la estructura de directorios sandbox que se menciona a menudo en el sandbox

(1) /AppName.app El directorio del paquete de la aplicación, incluida la propia aplicación. Dado que la aplicación debe estar firmada, el contenido de este directorio no se puede modificar en tiempo de ejecución; de lo contrario, la aplicación no se puede iniciar.

(2) / Documentos / Guarde archivos de datos importantes y archivos de datos de usuario de la aplicación. Los datos del usuario se colocan básicamente en esta ubicación (por ejemplo, imágenes o archivos de música descargados de Internet), esta carpeta se respaldará automáticamente cuando se actualice la aplicación, y los datos en ella se pueden sincronizar automáticamente cuando se conecta a iTunes.

(3) / Directorio de bibliotecas: Hay dos subdirectorios en este directorio:
se pueden crear subcarpetas . Se puede utilizar para almacenar datos de los que desea realizar una copia de seguridad, pero que los usuarios no desean que los vean. ITunes realizará una copia de seguridad de todas las carpetas de esta ruta, excepto Caches.

  • / Library / Caches (Caches) Guarde los archivos de soporte y los archivos de caché generados cuando se utiliza la aplicación (guarde la información necesaria en el proceso de reinicio de la aplicación), y los archivos de registro se ubican mejor en este directorio. No se hará una copia de seguridad de este directorio durante la sincronización de iTunes y los datos que contiene se pueden limpiar con otras herramientas.
  • / Library / Preferences (Preferences) guarde el archivo de preferencias de la aplicación (creado cuando se usa NSUserDefaults (este es este) tipo de configuración, no debe crearse manualmente; incluso se puede hacer una copia de seguridad de iTunes, y se realizará una copia de seguridad automáticamente cuando se actualice la aplicación; el archivo plist es solo Pon eso aquí).

(4) / tmp / guarda los datos temporales necesarios cuando la aplicación se está ejecutando. ITunes no respaldará los archivos en esta ruta. Cuando el iPhone se reinicia, borrará automáticamente todos los archivos en este directorio; por ejemplo, después de grabar el video, se coloca en / temp /; por lo tanto, los archivos de video deben transferirse desde esta carpeta al álbum; de lo contrario, el sistema limpiará los archivos de video

 

.

 

 BOOL success = [SSZipArchive createZipFileAtPath:_zipPath
                             withContentsOfDirectory:_samplePath
                                 keepParentDirectory:NO
                                    compressionLevel:-1
                                            password:password.length > 0 ? password : nil
                                                 AES:YES
                                     progressHandler:nil];

 

 

2. Descomprimir

 

- (IBAction)unzipPressed:(id)sender {
    if (!_zipPath) {
        return;
    }
    NSString *unzipPath = [self tempUnzipPath];

    NSLog(@"Unzip path: %@", unzipPath);
//打印结果:/Users/admin/Library/Developer/CoreSimulator/Devices/3E9F0B21-D9F9-4CB0-B9DC-DC7BEDC3DBFB/data/Containers/Data/Application/CE1DD483-E455-48C1-873F-4D83EE74920B/Library/Caches/77817AD7-9086-456B-835A-42EEE2461B7D
//新创建了一个“77817AD7-9086-456B-835A-42EEE2461B7D”的文件路径



    if (!unzipPath) {
        return;
    }
    NSString *password = _passwordField.text;
    BOOL success = [SSZipArchive unzipFileAtPath:_zipPath
                                   toDestination:unzipPath
                              preserveAttributes:YES
                                       overwrite:YES
                                  nestedZipLevel:0
                                        password:password.length > 0 ? password : nil
                                           error:nil
                                        delegate:nil
                                 progressHandler:nil
                               completionHandler:nil];


}

- (NSString *)tempUnzipPath {
    NSString *path = [NSString stringWithFormat:@"%@/%@",
                      NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0],
                      [NSUUID UUID].UUIDString];
    NSURL *url = [NSURL fileURLWithPath:path];
    NSError *error = nil;
    [[NSFileManager defaultManager] createDirectoryAtURL:url
                             withIntermediateDirectories:YES
                                              attributes:nil
                                                   error:&error];
    if (error) {
        return nil;
    }
    return url.path;
}

 

 

Supongo que te gusta

Origin blog.csdn.net/ximiaoweilai/article/details/108881158
Recomendado
Clasificación