2009-02-20 4 views
7

Je voudrais créer un répertoire dans le dossier « Documents » de l'utilisateur, mais jusqu'à présent, je ne l'ai trouvé comment obtenir le répertoire de l'utilisateur:Comment trouver le dossier 'Documents' de l'utilisateur avec Java dans OS X?

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

Dans Windows le code ci-dessus renvoie le ' Le répertoire de Mes Documents, ce qui est génial, c'est là que les nouveaux documents sont supposés aller. Sous OS X, il ne renvoie que le répertoire de base. L'ajout de 'Documents' au chemin retourné causerait des problèmes de localisation.

Comment est-ce que je peux faire ceci?

+0

La bonne méthode Objective-C est discuté à http://stackoverflow.com/questions/272544/whats-the- best-way-trouver-les-utilisateurs-documents-annuaire-sur-un-iphone - comment/si cela peut être fait en Java, je ne sais pas. –

Répondre

7

System.getProperty ("user.home") + Fichier.separator + "Documents";

Et ne vous inquiétez pas avec la localisation, regardez:

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

Mon OS X est en espagnol.

+1

Il s'avère que la localisation OS X fonctionne en changeant le nom affiché pour l'utilisateur, pas le nom de fichier réel. Référence ci-dessous. http://developer.apple.com/documentation/MacOSX/Conceptual/BPInternational/Articles/LocalizingPathnames.html#//apple_ref/doc/uid/20002141-BBCFJBFB – oldbeamer

+0

Rend la vie facile mais je ne suis pas sûr que je l'aime very much :) –

+0

La meilleure et la plus sûre réponse est d'utiliser Apple FileManager –

0

sur mac (pour autant que je connais toutes les dernières variantes 10.x) le « Mes Documents » est situé à (de la racine):
/Utilisateurs/nom d'utilisateur <>/Documents
Il est donc en le sous-répertoire "Documents" dans le répertoire personnel de l'utilisateur.

9

Vous voulez utiliser l'extension eio.FileManager d'Apple:

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

Merci, cela m'a juste aidé - j'avais besoin pour trouver le dossier de musique de l'utilisateur. L'extension n'est pas un téléchargement; C'est dans le JRE inclus dans Mac OS X. Par conséquent, vous devez écrire ce code de manière réfléchie si vous avez du code qui doit être compilé sur d'autres plateformes. Enfin, une référence à tous les types de dossier peut être trouvée à http://walteriankaye.com/as/foldertypes.html –

+0

Ou vous pouvez télécharger un bout de l'extension, puis créer une classe wrapper qui ne sera jamais appelée que si la plate-forme est osx, cela évite d'avoir à écrire du code de réflexion. –