我在OSX上,而不是iOS,Objective-C
我收到这样的外部输入,我需要获取该文件。
Case A (posix path): "path/to/afile.extension"
Case B (HFS path): "path:to:afile.extension"
在案例A中,我可以使用
获取文件[path lastPathComponent];
在案例B中我可以通过
获得[[path componentsSeparatedByString:@":"] lastObject];
不幸的是,我不知道输入是A型还是B型。识别传递路径是posix路径还是HFS路径的最佳方法是什么?
答案 0 :(得分:0)
识别传递路径是posix路径还是HFS路径的最佳方法是什么?
我的头脑:我不认为你可以根据字符串做这件事,因为POSIX路径分隔符'/'在HFS文件名中是有效的,副-versa。例如。 POSIX路径片段:
... Desktop/a:colon.txt
和HFS路径片段:
... Desktop:a/colon.txt
指的是同一个文件。
您可以做的是检查路径是否存在使用文件管理器(NSFileManager
)调用 - 这些调用HFS路径 - 以及access(2)
系统调用 - 它采用POSIX路径。如果只有其中一个工作,你知道你拥有的路径类型,如果两个工作都有一些异常命名的磁盘和文件,并且路径不明确! (如果两种方法都不起作用,则无论如何解释路径都无效。)
您也可以通过从路径创建文件NSURL
来进行检查,如果成功,则调用NSURL
方法来检查是否存在。
<强>更新强>
您的评论指出文件不存在,因此检查是否存在显然会失败。所以考虑一下检查它的工作路径,只为你无法弄清楚的错误产生错误。 E.g:
要检查字符串中的字符,卷名等,请从NSString
,NSFileManager
和NSURL
文档开始。如果您遇到任何问题,一旦您构建了一系列测试,请提出一个新问题来描述您的测试,显示您的代码等等,而且毫无疑问会有人帮助您。
HTH