ios file:/// var / mobile / Containers和file:/// private / var / mobile / Containers之间有什么区别?

时间:2018-03-20 18:36:16

标签: ios swift

它们是不同的还是简单的别名?

通过运行:

获取/ private / var
FileManager.default.contentsOfDirectory(at: folder, includingPropertiesForKeys: [], options: [])

第二个是用简单的创建的:

data.write(to: f, options: [.atomic]) 

其中f与"文件夹"

在同一目录中

2 个答案:

答案 0 :(得分:3)

这是相同的目录,可以通过检索来验证 两者的“规范路径”:

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"
}

答案 1 :(得分:0)

对于Swift用户,使用URL.standardizedFileURL可以消除由包含软链接或最终解析为同一文件的其他不同元素的路径引起的歧义/混乱。