SwiftUIでdocumentDirectory内のファイル一覧を取得する方法を説明する。
結論
以下のコードを記述する。
let documentDirectoryのURL = FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask).first!
do {
let ファイル一覧 = try FileManager.default.contentsOfDirectory(
at: documentDirectoryのURL,
includingPropertiesForKeys: nil)
print(ファイル一覧)
} catch {
print("error")
}
具体例
- documentDirectoryにファイルを3つ保存する。
- documentDirectory内のファイル一覧を取得する。
import SwiftUI
struct ContentView: View {
var body: some View {
Button(action: {
documentDirectoryにファイルを保存(ファイル名: "globe") // ? 1
documentDirectoryにファイルを保存(ファイル名: "pencil") // ? 1
documentDirectoryにファイルを保存(ファイル名: "person") // ? 1
documentDirectory内のファイル一覧を取得() // ? 2
}) {
Text("ここをタップ")
}
}
func documentDirectoryにファイルを保存(ファイル名: String) {
let 画像 = UIImage(systemName: ファイル名)!
do {
let fileURL = try FileManager.default
.url(for: .documentDirectory,
in: .userDomainMask, appropriateFor: nil, create: true)
.appendingPathComponent(ファイル名)
.appendingPathExtension("png")
try 画像.pngData()?.write(to: fileURL)
} catch {
print("エラー")
}
}
func documentDirectory内のファイル一覧を取得() {
let documentDirectoryのURL = FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask).first!
do {
let ファイル一覧 = try FileManager.default.contentsOfDirectory(
at: documentDirectoryのURL,
includingPropertiesForKeys: nil)
print(ファイル一覧)
} catch {
print("error")
}
}
}
実行するとdocumentDirectory内のファイル一覧がprintされる。
[file:///private/var/mobile/Containers/Data/Application/EC60D865-3824-4D6C-8589-AA93D9CF04B9/Documents/person.png,
file:///private/var/mobile/Containers/Data/Application/EC60D865-3824-4D6C-8589-AA93D9CF04B9/Documents/globe.png,
file:///private/var/mobile/Containers/Data/Application/EC60D865-3824-4D6C-8589-AA93D9CF04B9/Documents/pencil.png]
まとめ
SwiftUIでdocumentDirectory内のファイル一覧を取得する方法を説明した。
コメント