2009-07-15 14 views
2

Ich portiere eine Windows-Anwendung auf OSX und brauche die Benutzer zu Hause, Dokumente und Musik-Verzeichnisse. Es erfolgt unter Windows mit einem WinAPI-Aufruf SHGetFolderPath.Was entspricht SHGetFolderPath auf OSX?

  1. Wie kann ich es in OSX tun, vorzugsweise ohne Objective C zu verwenden?
  2. Wenn ich es ohne Objective C nicht schaffen kann, wie kann ich das überhaupt machen?

Antwort

2

Rufen Sie NSSearchPathForDirectoriesInDomains oder FSFindFolder.

+0

NSMusicDirectory schließlich in v10.6 erschienen. –

3

Sie können einen eigenes Home-Verzeichnis des Benutzers erhalten, indem an der Umgebungsvariable HOME (zum Beispiel „echo $HOME“ aus einer Schale oder getenv aus C) suchen. Für das Ausgangsverzeichnis anderer Benutzer können Sie getpwnam oder getpwuid verwenden (weitere Details finden Sie auf den Hilfeseiten), um das Ausgangsverzeichnis abzurufen. Für andere Verzeichnisse können Sie die Carbon API FSFindFolder ausprobieren.

3

Ich weiß, dass Sie es vorziehen, nicht Objective-C, zu verwenden, aber hier ist ein Beispiel dafür, wie es mit Objective-C zu tun:

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

es wie folgt verwendet:

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

, die den vollständigen POSIX-Pfad des Bibliothekverzeichnisses des aktuellen Benutzers ausgibt. Hier ist eine Referenz für andere Verzeichnisse, die Sie suchen können:

NSSearchPathDirectory