我将一个Windows应用程序移植到OSX,需要获取用户的家庭,文档和音乐目录。它在Windows上使用SHGetFolderPath
WinAPI调用完成。什么是OSX上SHGetFolderPath的等价物?
- 如何在OSX中执行此操作,最好不使用Objective C?
- 如果我无法做到没有目标C,我该怎么做呢?
我将一个Windows应用程序移植到OSX,需要获取用户的家庭,文档和音乐目录。它在Windows上使用SHGetFolderPath
WinAPI调用完成。什么是OSX上SHGetFolderPath的等价物?
致电NSSearchPathForDirectoriesInDomains
或FSFindFolder
。
您可以通过查看环境得到了用户自己的主目录变量HOME
(例如,“echo $HOME
”从从C shell或getenv
)。对于其他用户的主目录,您可以使用或getpwuid
(请参阅其联机帮助页获取更多详细信息)来检索其主目录。对于其他目录,您可以尝试Carbon API FSFindFolder。
我知道你宁愿不使用的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路径。这里是你可以搜索其他目录的引用:
NSMusicDirectory终于出现在v10.6中。 – 2009-12-30 03:03:36