2020-09-30SSZipArchive解凍は簡単に使用できます

 

 

SSZipArchiveは、公式デモアドレスhttps://github.com/ZipArchive/ZipArchiveを解凍します

次の記事は、デモを見ているときの解凍機能を主に記録しています

 

1.圧縮

  _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

Zipパスが「サンドボックスパスと[NSUUIDUUID] .UUIDString]で構成されていることがわかります。/ Users / admin /.../ Library / Caches部分はサンドボックスパスであり、 後者の部分はUUIDです。同時に、サンドボックス内のよく言われるサンドボックスディレクトリ構造も見ました

(1)/AppName.appアプリケーション自体を含むアプリケーションのパッケージディレクトリ。アプリケーションは署名されている必要があるため、このディレクトリの内容を実行時に変更することはできません。変更しないと、アプリケーションを起動できません。

(2)/ Documents /アプリケーションの重要なデータファイルとユーザーデータファイルを保存します。ユーザーデータは基本的にこの場所に配置され(たとえば、インターネットからダウンロードした写真や音楽ファイル)、このフォルダーはアプリケーションの更新時に自動的にバックアップされ、その中のデータはiTunesに接続すると自動的に同期できます。

(3)/ Libraryディレクトリ:このディレクトリの下には2つのサブディレクトリがあります
サブフォルダを作成できます。バックアップしたいがユーザーには見られたくないデータを保存するために使用できます。キャッシュを除く、このパスの下にあるすべてのフォルダは、iTunesによってバックアップされます

  • / Library / Caches(Caches)アプリケーションの使用時に生成されたサポートファイルとキャッシュファイルを保存し(アプリケーションの再起動プロセスで必要な情報を保存します)、ログファイルはこのディレクトリに配置するのが最適です。このディレクトリはiTunesの同期中にバックアップされず、その中のデータは他のツールによってクリーンアップされる可能性があります。
  • / Library / Preferences(Preferences)は、アプリケーション設定ファイル(NSUserDefaults(これはこれです)タイプの設定を使用するときに作成されます。手動で作成しないでください。iTunesでもバックアップでき、アプリケーションが更新されると自動的にバックアップされます。plistファイルはここに置いてください)。

(4)/ tmp /は、アプリケーションの実行時に必要な一時データを保存します。このパスのファイルは、iTunesによってバックアップされません。iphoneが再起動すると、このディレクトリ内のすべてのファイルが自動的にクリアされます。たとえば、ビデオの録画後、/ temp /に配置されます。したがって、ビデオファイルはこのフォルダからアルバムに転送する必要があります。そうしないと、ビデオファイルがシステムによってクリーンアップされます。

 

 

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

 

 

2.解凍します

 

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

 

 

おすすめ

転載: blog.csdn.net/ximiaoweilai/article/details/108881158