0

Carbon应用程序中,我需要将 HFS 样式的 MacOS 路径转换为可在 fopen() 调用中使用的 POSIX 路径。例如:

我的卷:myFolder:myFile.jpg

类似于:

/我的卷/myFolder/myFile.jpg

如果我的 Vol是我的系统磁盘, /myFolder/ myFile.jpg工作得很好,但如果它在不同的卷上,它就不起作用(即我的 Vol/myFolder/myFile.jpg失败。

如何在此处指定音量?

谢谢!

账单

4

2 回答 2

2

一种避免硬编码的方法(考虑未安装的卷/Volumes/,例如手动安装的卷。)

CFStringRef myHFSPath = CFSTR("Macintosh HD:Some Folder:Some Subfolder:Some File");

CFURLRef url = CFURLCreateWithFileSystemPath(NULL, myHFSPath, kCFURLHFSPathStyle, FALSE);
if (url) {
    UInt8 posixPath[PATH_MAX * 2]; /* Extra-large because why not? */
    if (CFURLGetFileSystemRepresentation(url, TRUE, posixPath, sizeof(posixPath)) {
        /*
            posixPath now contains a C string suitable for passing to BSD and
            C functions like fopen().
        */
    }
    CFRelease(url);
}
于 2012-08-05T01:27:57.707 回答
0

对于 POSIX 样式路径,您需要在辅助卷前面加上“/Volumes”。所以你的例子是/Volumes/myVol/myFolder/myFile.jpg。请注意,即使myVol是您的系统磁盘,这也可以。所以以/Volumes开头总是安全的。

于 2012-07-20T22:38:45.410 回答