2009-02-20 12 views
7

Ich möchte ein Verzeichnis in den Ordner ‚Dokumente‘ des Benutzers erstellen, aber bisher habe ich nur herausgefunden, wie das Home-Verzeichnis des Benutzers zu erhalten:Wie finde ich den Ordner "Dokumente" des Benutzers mit Java in OS X?

javax.swing.JFileChooser fr = new javax.swing.JFileChooser(); 
javax.swing.filechooser.FileSystemView fw = fr.getFileSystemView(); 
this.userDirectory = fw.getDefaultDirectory(); 

In Windows der obige Code gibt die ' Das Verzeichnis von My Documents, das ist großartig, dort sollten die neuen Dokumente hingehen. Unter OS X wird nur das Ausgangsverzeichnis zurückgegeben.

Das Hinzufügen von 'Documents' zum zurückgegebenen Pfad würde Probleme bei der Lokalisierung verursachen.

Wie kann ich das tun?

+0

Die richtige Objective-C-Methode bei http://stackoverflow.com/questions/272544/whats-the- diskutiert Wie finde ich das in Java? –

Antwort

7

System.getProperty ("user.home") + Datei.separator + "Dokumente";

Und keine Sorge mit Lokalisierung über, aussehen:

macb:Documents laullon$ pwd 
/Users/laullon/Documents 

Mein OS X in Spanisch ist.

+1

Es stellt sich heraus, dass die Lokalisierung von OS X funktioniert, indem der angezeigte Name für den Benutzer geändert wird, nicht der tatsächliche Dateiname. Referenz unten. http://developer.apple.com/documentation/MacOSX/Conceptual/BPInternational/Articles/LocalizingPathnames.html#//apple_ref/doc/uid/20002141-BBCFJBFB – oldbeamer

+0

Macht das Leben einfach, aber ich bin mir nicht sicher, ob ich es mag sehr viel :) –

+0

Die beste und sicherste Antwort ist Apples FileManager zu verwenden –

0

auf Mac (soweit ich die letzten 10.x Varianten kennen) die „Eigene Dateien“ an (von root) befindet:
/Users/< Benutzername>/Dokumente
So drin ist das Unterverzeichnis "Documents" im Home-Verzeichnis für den Benutzer.

9

Sie wollen Apple eio.FileManager Erweiterung verwenden:

static public String documentsDirectory() 
      throws java.io.FileNotFoundException { 
     // From CarbonCore/Folders.h 
     final String kDocumentsDirectory = "docs"; 
     return com.apple.eio.FileManager.findFolder(
      com.apple.eio.FileManager.kUserDomain, 
      com.apple.eio.FileManager.OSTypeToInt(kDocumentsDirectory) 
     ); 
    } 

Documentation

+2

Danke, das hat mir nur geholfen - ich brauchte es, um den Musikordner des Benutzers zu finden. Die Erweiterung ist kein Download; Es befindet sich innerhalb der JRE, die in Mac OS X enthalten ist. Daher müssen Sie diesen Code reflektiv schreiben, wenn Sie Code haben, der auf anderen Plattformen kompiliert werden muss. Schließlich können Sie einen Verweis auf alle Ordnertypen finden Sie unter http://walteriankaye.com/as/foldertypes.html –

+0

Oder Sie können einen Stub der Erweiterung herunterladen, dann erstellen Sie eine Wrapper-Klasse, die nur aufgerufen wird, wenn Plattform ist osx, dies vermeidet, Reflektionscode schreiben zu müssen. –

Verwandte Themen