我正在读取仍使用HFS样式路径的旧文件,例如VolumeName:Folder:File
。
我需要把它们转换成POSIX路径。
我不喜欢进行字符串替换,因为它有点棘手,也不想为此任务调用AppleScript或Shell操作。
是否有一个框架功能来实现这一点?反对不是问题。
顺便说一下,这里有一个solution for the inverse operation。
最佳答案
Obj-C和Swift中作为NSString / String
类别/扩展的解决方案。不可用的kCFURLHFSPathStyle
样式的规避方式与链接问题中的规避方式相同。
目标C
@implementation NSString (POSIX_HFS)
- (NSString *)POSIXPathFromHFSPath
{
NSString *posixPath = nil;
CFURLRef fileURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, (CFStringRef)self, 1, [self hasSuffix:@":"]); // kCFURLHFSPathStyle
if (fileURL) {
posixPath = [(__bridge NSURL*)fileURL path];
CFRelease(fileURL);
}
return posixPath;
}
@end
斯威夫特
extension String {
func posixPathFromHFSPath() -> String?
{
guard let fileURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault,
self as CFString?,
CFURLPathStyle(rawValue:1)!,
self.hasSuffix(":")) else { return nil }
return (fileURL as URL).path
}
}