Что эквивалентно SHGetFolderPath в OSX? - PullRequest
2 голосов
/ 15 июля 2009

Я портирую приложение Windows на OSX и мне нужно получить домашний каталог, документы и музыкальные каталоги пользователя. Это делается в Windows с помощью SHGetFolderPath вызова WinAPI.

  1. Как я могу сделать это в OSX, желательно без обращения к Objective C?
  2. Если я не могу сделать это без Цели С, как я могу это сделать вообще?

Ответы [ 3 ]

3 голосов
/ 15 июля 2009

Я знаю, что вы предпочитаете не использовать 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

3 голосов
/ 15 июля 2009

Вы можете получить собственный домашний каталог пользователя, посмотрев на переменную окружения HOME (например, "echo $HOME" из оболочки или getenv из C). Для домашнего каталога других пользователей вы можете использовать getpwnam или getpwuid (см. Их справочные страницы), чтобы получить их домашний каталог. Для других каталогов вы можете попробовать Carbon API FSFindFolder .

2 голосов
/ 15 июля 2009

Звоните NSSearchPathForDirectoriesInDomains или FSFindFolder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...