【发布时间】:2019-01-24 20:23:56
【问题描述】:
我有一个原始文件 /path/to/foo.txt 和一个指向它的符号链接 /other/path/to/foo.txt。我删除了/path/to/foo.txt,但保留了符号链接。 如何使用 Cocoa API 判断符号链接仍然存在?
我通过使用标准/推荐的FileManager.fileExists(atPath:) 发现了这一点。对于不熟悉该 API 的任何人来说,这里的问题是它遍历符号链接。所以,当我这样做时:
FileManager.default.fileExists(atPath: "/other/path/to/foo.txt")
它返回false,因为它看到我给了它一个符号链接并解析它,然后看到解析路径上没有文件。
正如文档所说:
如果您的应用程序无法访问位于
path的文件,可能是因为无法访问一个或多个父目录,则此方法返回false。如果path中的最后一个元素指定了符号链接,则此方法会遍历该链接并根据链接目标处文件的存在返回true或false。
FileManager 中似乎没有替代方案。所以,我想知道是否可以调用 Cocoa API 来判断那里是否存在符号链接,或者我是否必须求助于 C 或 Bash API。
【问题讨论】:
标签: swift cocoa symlink nsfilemanager symlink-traversal