0

Carbonアプリでは、HFSスタイルのMacOSパスをfopen()呼び出しで使用できるPOSIXパスに変換する必要があります。例えば:

私のVol:myFolder:myFile.jpg

次のようなものに:

/ my Vol / 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 に答える