Documentフォルダにファイルを保存する

Documentフォルダの操作毎回忘れて調べているので備忘録としてまとめます。一度記事に書けば忘れないはず!

Documentフォルダ保存・読み込み

ファイルの保存

ファイルを何らかの形で取得するとData型になっているはずです、そしてData型にはwriteというメソッドが用意されています。

writeの引数に渡すURLはDocumentフォルダパス+ ファイル名で保存します。

        let documentPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
            //appendingPathComponentでURL型の最後に文字列を連結できる
            let path_file_name = documentPath.appendingPathComponent( "hoge.zip" )
            
        do {
            let data:[UInt8] = [0x01, 0x02, 0x03]
            try Data(bytes: data, count: data.count).write(to: path_file_name)
            print("成功")
        } catch {
            print("失敗")
        }

端末内に保存されたDocumentフォルダを確認するには以下の記事を参考にしてください。

デバイスに保存したUserDefaultの値を確認する

AppData > Documentフォルダ直下にファイルが保存されているはずです。

読み込み

        let documentPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
        do {
            let fileURL = documentPath.appendingPathComponent("hoge.zip")
            let zipData = try Data(contentsOf: fileURL)
            print("読み込み成功")
            
        } catch{
            
            print("読み込み失敗")
        }

失敗

zipファイル自体はDocumentフォルダに作成できていたのですが、zipファイルを開くことができませんでした。

Dataをそのまま保存してもzipファイルにはなってくれないようでした。Swiftでzipファイルを作成する際はSSZipArchiveというライブラリを使うのが一般的の様です。

参考文献

iOSアプリのファイル保存について

【Swift4】コピペで出来るDocumentsフォルダの操作方法(画像の保存編)

[Swift3.0] ZIPファイルの解凍と圧縮ができるiOSアプリ