它们是不同的还是简单的别名?
我通过运行以下命令来获取 /private/var 目录:
FileManager.default.contentsOfDirectory(at: folder, includingPropertiesForKeys: [], options: [])
第二个则是通过简单的方式创建:
data.write(to: f, options: [.atomic])
其中f与"folder"位于同一目录下。
它们是不同的还是简单的别名?
我通过运行以下命令来获取 /private/var 目录:
FileManager.default.contentsOfDirectory(at: folder, includingPropertiesForKeys: [], options: [])
data.write(to: f, options: [.atomic])
其中f与"folder"位于同一目录下。
这是相同的目录,通过获取两个目录的“规范路径”可以验证:
let url1 = URL(fileURLWithPath: "/var/mobile/Containers/")
if let cp = (try? url1.resourceValues(forKeys: [.canonicalPathKey]))?.canonicalPath {
print(cp)
// "/private/var/mobile/Containers"
}
let url2 = URL(fileURLWithPath: "/private/var/mobile/Containers/")
if let cp = (try? url2.resourceValues(forKeys: [.canonicalPathKey]))?.canonicalPath {
print(cp)
// "/private/var/mobile/Containers"
}
/var
是指向 /private/var
的符号链接:var buffer = Array<Int8>(repeating: 0, count: 1024)
if readlink("/var", &buffer, buffer.count) > 0 {
print(String(cString: &buffer))
// "private/var"
}
URL.standardizedFileURL
可以消除路径中包含软链接或其他不同元素最终解析为同一文件所造成的歧义和困惑。
folder
URL对象长什么样子。 - staticVoidMan