2020-09-30 A descompressão SSZipArchive é simples de usar

 

 

SSZipArchive descompacte o endereço de demonstração oficial https://github.com/ZipArchive/ZipArchive

O artigo a seguir registra principalmente a função de descompressão ao assistir a demonstração

 

1. Compressão

  _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

Você pode ver que o caminho Zip "consiste no caminho da sandbox e [NSUUID UUID] .UUIDString]". A parte /Users/admin/.../Library/Caches é o caminho da sandbox e a  última parte é o UUID. Ao mesmo tempo, também vi a frequentemente referida estrutura de diretório sandbox na sandbox

(1) /AppName.app O diretório do pacote do aplicativo, incluindo o próprio aplicativo. Como o aplicativo deve ser assinado, o conteúdo deste diretório não pode ser modificado em tempo de execução, caso contrário, o aplicativo não pode ser iniciado.

(2) / Documentos / Salvar arquivos de dados importantes e arquivos de dados do usuário do aplicativo. Os dados do usuário são basicamente colocados neste local (como fotos ou arquivos de música baixados da Internet). Esta pasta será copiada automaticamente quando o aplicativo for atualizado e os dados contidos nela também podem ser sincronizados automaticamente quando conectado ao iTunes.

(3) Diretório / Biblioteca: Existem dois subdiretórios neste diretório: subpastas
podem ser criadas. Ele pode ser usado para armazenar dados dos quais você deseja fazer backup, mas não deseja que sejam vistos pelos usuários. Todas as pastas sob este caminho, exceto Caches, serão copiadas pelo iTunes

  • / Library / Caches (Caches) Salve os arquivos de suporte e arquivos de cache gerados quando o aplicativo é usado (salve as informações necessárias no processo de reinicialização do aplicativo) e os arquivos de log são mais bem colocados neste diretório. Não será feito backup deste diretório durante a sincronização do iTunes e os dados nele contidos podem ser limpos por outras ferramentas.
  • / Library / Preferences (Preferences) salva o arquivo de preferências do aplicativo (criado ao usar NSUserDefaults (este é) tipo de configurações, não deve ser criado manualmente; mesmo o iTunes pode ser feito backup, e será feito automaticamente quando o aplicativo for atualizado; o arquivo plist é apenas Coloque aqui).

(4) / tmp / salva os dados temporários necessários quando o aplicativo está em execução.Os arquivos neste caminho não serão copiados pelo iTunes. Quando o iphone reiniciar, ele apagará automaticamente todos os arquivos neste diretório; por exemplo, após gravar o vídeo, ele é colocado em / temp /; portanto, os arquivos de vídeo devem ser transferidos desta pasta para o álbum, caso contrário, os arquivos de vídeo serão limpos pelo sistema

 

.

 

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

 

 

2. Descompacte

 

- (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;
}

 

 

Acho que você gosta

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