我正在读取仍使用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
    }
}

09-07 13:36