确定交付的路径是 posix 路径还是 HFS 路径的最佳方法是什么?
Off-the-top-of-my-head:我不认为你可以根据字符串简单地做到这一点,因为 POSIX 路径分隔符“/”在 HFS 文件名中是有效的,反之亦然。例如 POSIX 路径片段:
... Desktop/a:colon.txt
和 HFS 路径片段:
... Desktop:a/colon.txt
参考同一个文件。
相反,您可以做的是使用文件管理器 ( NSFileManager
) 调用检查路径是否存在 - 这些调用采用 HFS 路径 - 以及access(2)
系统调用 - 采用 POSIX 路径。如果只有其中一个工作你知道你拥有的路径类型,如果两个工作你有一些异常命名的磁盘和文件并且路径是不明确的!(如果两者都不起作用,则路径无效解释任何一种方式。)
NSURL
您还可以通过从路径创建文件来进行检查,如果成功则调用NSURL
方法来检查是否存在。
更新
您的评论指出文件不存在,因此检查是否存在显然会失败。因此,请考虑检查解决问题的路径,仅对您无法弄清楚的错误产生错误。例如:
- 如果路径仅包含 '/' 或 ':' 分隔符,您可以确定 POSIX 或 HFS
- 完整的 HFS 路径始终以卷名开头,后跟冒号。确定已安装的卷名并根据您拥有的路径检查这些名称,如果与您拥有的 HFS 路径匹配
- 等等。
要检查字符串中的字符、卷名等,请以NSString
,NSFileManager
和NSURL
文档开头。一旦你建立了你的一系列测试,如果你有任何问题等等。问一个描述你的测试的新问题,显示你的代码等等,毫无疑问有人会帮助你。
高温高压