什么是OSX上的SHGetFolderPath?

时间:2009-07-15 00:38:17

标签: c objective-c macos

我正在将Windows应用程序移植到OSX,需要获取用户的家,文档和音乐目录。它是在Windows上使用SHGetFolderPath WinAPI调用完成的。

  1. 我怎样才能在OSX中完成,最好不要求助于Objective C?
  2. 如果没有Objective C我不能这样做,我该怎么办呢?

3 个答案:

答案 0 :(得分:3)

您可以通过查看环境变量HOME(例如,来自shell的“echo $HOME”或来自C的getenv)来获取用户自己的主目录。对于其他用户的主目录,您可以使用getpwnamgetpwuid(请参阅其联机帮助页以获取更多详细信息)来检索其主目录。对于其他目录,您可以尝试使用Carbon API FSFindFolder

答案 1 :(得分:3)

我知道你不想使用Objective-C,但这是一个如何用Objective-C做的例子:

static NSString *PathForUserDirectory(NSSearchPathDirectory directory) {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(directory, NSUserDomainMask, YES);
    if ([paths count] > 0) {
        return [paths objectAtIndex:0];
    }
    return nil;
}

像这样使用:

NSLog(@"Library folder: %@", PathForUserDirectory(NSLibraryDirectory));

将打印当前用户库目录的完整POSIX路径。以下是您可以搜索的其他目录的参考:

NSSearchPathDirectory

答案 2 :(得分:2)

致电NSSearchPathForDirectoriesInDomainsFSFindFolder