URL 常用的路径处理方法
URL 常用的路径处理方法

URL 常用的路径处理方法

在 Swift 中,URL 类提供多种对路径进行操作和管理的方法。

常用方法

添加路径方法

1、appendingPathComponent(_:):用于在现有路径后添加新的路径组件,例如文件名或子目录。它可以确保路径的正确性,不会影响 URL 的其他部分。

// 拼接文件路径
let documentFileURL = URL.documentsDirectory.appendingPathComponent("example.txt")
// 结果示例: file:///path/to/Documents/example.txt

2、appending(path:):appending可以直接将字符串添加到 URL 后。它不会检查或规范路径分隔符,因此如果用来拼接路径或文件名,可能会产生错误的路径结构。

// 用于网络请求 URL 拼接查询参数
let baseURL = URL(string: "https://example.com/api")!
let fullURL = baseURL.appending(path:"endpoint")
// 结果: "https://example.com/apiendpoint" (这里不会自动处理分隔符)

适合拼接 URL 查询参数或直接添加 URL 字符串。

提示:appending(path:)是一个新的API,在拼接URL层面和appendingPathComponent是等价的,还支持拼接查询参数等多种功能。

3、appendingPathExtension(_:):URL后面添加文件扩展名。

let fileURL = URL.documentsDirectory.appendingPathComponent("example").appendingPathExtension("txt")
// 结果: file:///path/to/Documents/example.txt

可以动态切换扩展名,不需要手动修改整个文件名字符串。

删除路径方法

1、deletingLastPathComponent():返回一个新的URL,移除 URL 的最后一个路径组件(文件名或目录名)。

let directoryURL = fileURL.deletingLastPathComponent()

2、deletingPathExtension():删除 URL 的文件扩展名。

let baseURL = fileURL.deletingPathExtension()
// 例如,archive.tar.gz → archive.tar

获取路径方法

1、path:获取本地文件系统路径,仅对 file://URL 有意义,返回的是解码后的 POSIX 路径形式。

let url = URL(fileURLWithPath: "/Users/test/image 1.png")

url.path
// /Users/test/image 1.png

2、lastPathComponent:获取 URL 的最后一个路径组件(例如文件名)。

let lastComponent = fileURL.lastPathComponent    // 获取文件名称 a.txt

3、pathExtension:获取 URL 的文件扩展名。

let extension = fileURL.pathExtension

4、relativePath:返回相URL的path部分,如果URL是相对URL。

URL(fileURLWithPath: "/a/b").relativePath  // "/a/b"
URL(string: "a/b")!.relativePath          // "a/b"

5、relativeString:返回构造URL时使用的原始字符串表示。

URL(string: "a/b")!.relativeString        // "a/b"
URL(string: "file:///a/b")!.relativeString // file:///a/b

6、absoluteString:以字符串形式返回 URL 的完整路径。

let urlString = url.absoluteString // file:///Users/test/image%201.png

7、query:获取 URL的 query 解析部分。

let base = URL(string: "https://example.com/api?token=123")!
print(base.query)            // "token=123"

判断路径方法

1、isFileURL:判断是否为文件路径。

let isURL = url.isFileURL

2、hasDirectoryPath:如果 URL 表示目录路径,返回 true。

let isDirectory = fileURL.hasDirectoryPath

3、checkResourceIsReachable():判断文件是否真实存在。

try url.checkResourceIsReachable()

其他方法

1、standardizingPath / standardizedFileURL:规范化路径分隔符,移除多余的 /,解析相对路径(如 ../)。

let url = fileURL.standardizingPath
let url = fileURL.standardizedFileURL

standardizedFileURL是新的API,相比standardizingPath更安全。

2、resourceValues(forKeys:):获取真实文件属性。

let values = try url.resourceValues(forKeys: [.isDirectoryKey, .fileSizeKey])

3、resolvingSymlinksInPath:解析路径中的符号链接。

let resolvedURL = fileURL.resolvingSymlinksInPath()

适合处理Finder拖入的路径。

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注