SwiftUI | ファイルのURLからファイル名/拡張子/ディレクトリを取得する方法

SwiftUI

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: "")

具体例

  1. ファイル名を取得する。
  2. ファイルの拡張子を取得する。
  3. ファイル名がスペースや日本語などを含んでいた場合に4でファイルのディレクトリを取得できないためファイル名をパーセントエンコードする。
  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からファイル名/拡張子/ディレクトリを取得する方法を説明した。

コメント

タイトルとURLをコピーしました