SwiftUIでファイルのURLからファイル名/拡張子/ディレクトリを取得する方法を説明する。
Swift 5.7 / Xcode 14.0 / iOS 16.0
結論
ファイルのURL(ディレクトリ/ファイル名.拡張子)に対して、ファイル名/拡張子/ディレクトリを取得するには以下のように記述する。
let ファイル名 = ファイルのURL.lastPathComponent
let ファイル拡張子 = ファイルのURL.pathExtension
let ファイル名のパーセントエンコード = ファイル名
.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)!
let ファイルディレクトリ = ファイルのURL.path()
.replacingOccurrences(of: ファイル名のパーセントエンコード, with: "")
具体例
- ファイル名を取得する。
- ファイルの拡張子を取得する。
- ファイル名がスペースや日本語などを含んでいた場合に4でファイルのディレクトリを取得できないためファイル名をパーセントエンコードする。
- ファイルのディレクトリを取得する。
import SwiftUI
struct ContentView: View {
var body: some View {
Button("▶ここをタップ") {
test1()
}
}
}
func test1() {
do {
// 適当なファイルのURLを準備
let documentDirectoryのURL = FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask).first!
var ファイル一覧: [URL]
ファイル一覧 = try FileManager.default.contentsOfDirectory(
at: documentDirectoryのURL,
includingPropertiesForKeys: nil)
let ファイルのURL: URL = ファイル一覧[0]
// ここからが本番
let ファイル名 = ファイルのURL.lastPathComponent // ? 1
let ファイル拡張子 = ファイルのURL.pathExtension // ? 2
let ファイル名のパーセントエンコード = ファイル名
.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)! // ? 3
let ファイルディレクトリ = ファイルのURL.path()
.replacingOccurrences(of: ファイル名のパーセントエンコード, with: "") // ? 4
print(ファイル名)
print(ファイル拡張子)
print(ファイルディレクトリ)
} catch {
print("error")
}
}
以下にprint結果を示す。
ヨシヒコの動画.mp4
mp4
/Users/yoshihiko/Library/Developer/CoreSimulator/.../Documents/
まとめ
SwiftUIでファイルのURLからファイル名/拡張子/ディレクトリを取得する方法を説明した。
コメント