iOS 16 开始,获取系统文件夹的 API

594 阅读2分钟

iOS 16 之前的版本

在之前的版本中,要想获取当前沙盒目录需要用到 FileManager 这个 API,相对来说比较麻烦,函数名又比较长,很难记,我每次使用都得搜索一下才能写出来,比如我们要获取 documents 文件夹:

let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let documentsDirectory = paths[0]
print("documentsDirectory is: ", documentsDirectory)

iOS 16 版本新增功能

现在在 iOS 16 中,URL 类型上增加了一系列方法,使用文件和目录变得更加容易,比如获取 documents 文件夹,我们可以直接访问 URL 类型的静态属性 documentsDirectory 来获取:

print("documentsDirectory is: ", URL.documentsDirectory)

这个 API 变得非常方便,简单。

获取其他文件夹路径

通过查看 URL 结构文档中新增的类型属性,能看到各种路径的获取方式:

extension URL {
    /// 当前文件夹
    static func currentDirectory() -> URL

    /// home 文件夹
    static var homeDirectory: URL { get }

    /// tmp 文件夹
    static var temporaryDirectory: URL { get }

    /// Caches 文件夹
    static var cachesDirectory: URL { get }

    /// 应用文件夹
    static var applicationDirectory: URL { get }

    /// Library 文件夹
    static var libraryDirectory: URL { get }

    /// 用户文件夹 (/Users/)
    static var userDirectory: URL { get }

    /// Documents 文件夹
    static var documentsDirectory: URL { get }

    /// 当前用户的桌面文件夹  (~/Desktop)
    static var desktopDirectory: URL { get }

    /// Application support 文件夹
    static var applicationSupportDirectory: URL { get }

    /// 当前用户的下载文件夹 (~/Downloads)
    static var downloadsDirectory: URL { get }

    /// 当前用户的 Movies 文件夹 (~/Movies)
    static var moviesDirectory: URL { get }

    /// 当前用户的 Music 文件夹 (~/Music)
    static var musicDirectory: URL { get }

    /// 当前用户的 Pictures 文件夹 (~/Pictures)
    static var picturesDirectory: URL { get }

    /// 当前用户的共享文件夹 (~/Public)
    static var sharedPublicDirectory: URL { get }

    /// 当前用户的 Trash 文件夹 (~/.Trash)
    static var trashDirectory: URL { get }

    /// 指定用户的 Home 文件夹
    static func homeDirectory(forUser userString) -> URL?
}

本文同步自微信公众号 “iOS新知”,每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!