技術

Swiftのzip圧縮・解凍をライブラリ利用で最速実装する

どうも、フリーランスのITエンジニア兼ブロガー兼投資家のKerubitoです。

Swiftでzipファイルの圧縮や解凍を手っ取り早くやりたい。

ありますよね。

とにかくサクッとzipファイルの圧縮や解凍をやりたいんじゃという人向けの記事です。

では、ぱぱっとやってみましょう。

環境は以下の通りです。

・Swiftバージョン:5
・Xcodeバージョン:12.2
・使用デバイス:iPhoneX(14.3)

SSZipArchiveを利用

Swiftで手っ取り早くzipファイルの圧縮・解凍をするにはSSZipArchiveというライブラリを使うのがいいでしょう。

以下がGitHubのURLです。

https://github.com/ZipArchive/ZipArchive

ほかにも手段はありますが、SSZipArchiveはStarが4.7kついている定番のライブラリ。

唯一難点なのがファイルにしか対応していないところです。

バイナリをzipに圧縮したり、逆にzipのバイナリを解凍をすることはできないっぽい。

なのでいったんファイルを介するやり方になってしまいますね。

Readmeには以下のことができるという記載があります。

  • Unzip zip files;
  • Unzip password protected zip files;
  • Unzip AES encrypted zip files;
  • Create zip files;
  • Create large (> 4.3Gb) files;
  • Create password protected zip files;
  • Create AES encrypted zip files;
  • Choose compression level;
  • Zip-up NSData instances. (with a filename)

CocoaPodsでSSZipArchiveを使う

SSZipArchiveを利用するのに、ここではCocoaPodsというライブラリ管理パッケージを利用します。

CocoaPodsの導入に関しては以下の記事を参考にしてください。

CocoaPods3
SwiftでCocoaPodsを使う手順メモとios-chartsでグラフ表示

Swift でiphoneやiPad向けのアプリ開発をする際に、もはや必須となりつつあるライブラリ。 そのライブラリを便利に使うためのCocoaPodsの導入手順です。 CocoaPodsって何?って ...

続きを見る

SSZipArchiveでテキストファイルをzipに圧縮

SSZipArchiveを使ってテキストファイルをzipに圧縮しましょう。

toZipはバイナリデータ、zipのパス、zipの元ファイルのパスを受け取って、zipファイルを作成します。

SSZipArchiveのcreateZipFIleの戻り値がBoolであり、toZipもそれをそのまま返します。

呼び出し側です。

viewDidLoadで直接呼びます(笑

圧縮元のデータ、パスとzipのパスを準備し、toZipを呼び出します。

以上、めちゃくちゃ簡単にzip圧縮ができてしまいますね。

SSZipArchiveでzipの解凍

SSZipArchiveを使ってzipを解凍しましょう。

unZipはより簡単。

SSZipArchive.unzipFile(atPath: archivePath, toDestination: url.path)を最後に追加しただけです。

これでいったん圧縮したテキストファイルを再び解凍します。

以上、楽しい開発ライフを!

-技術

© 2021 Kerubitoのブログ