1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

<Swift> Documentsディレクトリ内へファイルの保存処理と取得処理

Last updated at Posted at 2021-04-02

はじめに

前の記事を見ると"はじめてに"という誤植がありました。。。恥ずかし。。。
Documentディレクトリについてお仕事でつまずいたのでまとめます。備忘録です。

Documentsディレクトリ

アプリ内で保有しているフォルダの一つでユーザ作成のコンテンツ(文書や画像、動画など)を保存しているのに適しています。

ディレクトリ操作に関する注意点

Swiftでアプリ内のファイル操作には、ファイルをString型のパスで指定する方法と、URL型のファイルURLで指定する方法の2通りがあります。
※ファイルURLは パスの先頭に”file://” が付加されているため、ファイルURLをパスに変換する場合、単純にキャスト(ファイルURL.absoluteString)しても上手くいかないです。

Documentsディレクトリ内に写真ファイルを保存する

まずは、以下のとおりDocumentsディレクトリ のファイルURLを取得します。

let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]

次に、保存する写真データの名前を付けます。※名前が重複すると保存できない。撮影した年月日時間を名前に入れてあげるなど工夫が必要です。

let fileName: String? = "IMG.jpg"

ディレクトリのパスにファイル名をつなげてファイルのフルパスを作成しましょう。

let fileURL = documentsURL.appendingPathComponent(fileName!)

写真ファイルをDocumentsディレクトリへ保存します。
※名前が重複すると保存できないです。撮影した年月日時間を名前に入れてあげるなど工夫が必要です。

let jpgImageData = image.jpegData(compressionQuality:0.5)

do {
try jpgImageData!.write(to: fileURL, options: .atomic)
} catch {
print(error)
}

Documentsディレクトリ内のファイルを全て取得する

まずはDocumentsディレクトリ のファイルURLを取得します。

let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]

次にDocuments ディレクトリ配下のファイル一覧をURL型で取得します。
※FileManager.default.contentsOfDirectory(at: documentsURL)の場合、ファイル名の一覧が取得できます。(["file1", "file2", "directory1"])

do {
let contentURLs = try FileManager.default.contentsOfDirectory(at: documentsURL, includingPropertiesForKeys: nil)
} catch {
print("error")
}

参考記事

以下を参考にさせていただきました。ありがたや。
・【Swift4】コピペで出来るDocumentsフォルダの操作方法(画像の保存編)
  https://qiita.com/ryomaDsakamoto/items/ab8e5cd9da1ea70f3302
・【iOS】デバイス(ローカル)にデータを保存する方法
  https://qiita.com/shiz/items/c7a9b3218269c5c92fed
・[Swift3.0] パスとファイルURLの違いと相互変換の方法
  https://joyplot.com/documents/swift-fileurl-path/
・撮影した動画ファイルを iOS アプリ内に保存し、任意のタイミングでフォトライブラリに書き出す Swift コード
  https://neos21.net/blog/2019/01/11-02.html
・【Swift】テキストファイルの読み書き
  https://capibara1969.com/2836/#toc13
・[iOS][Swift]指定したディレクトリにあるファイルの一覧を取得する
  https://egg-is-world.com/2017/08/13/ios-swift-file-list/
・【Swift】URLでパスを扱うときに便利なプロパティとメソッド
  https://qiita.com/toshi586014/items/52b87c034e411681ca7b

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?