2009-02-20 11 views
7

Mi piacerebbe creare una directory nella cartella 'Documenti' dell'utente, ma finora ho scoperto solo come tornare a casa directory dell'utente:Come trovo la cartella "Documenti" dell'utente con 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 il codice di cui sopra restituisce il ' La directory dei miei documenti, che è eccezionale, è dove devono andare i nuovi documenti. Su OS X restituisce solo la directory home.

L'aggiunta di "Documenti" al percorso restituito potrebbe causare problemi con la localizzazione.

Come posso fare questo?

+0

Il corretto metodo di Objective-C è discusso a http://stackoverflow.com/questions/272544/whats-the- best-way-to-find-the-users-documents-directory-on-un-iphone - come/se ciò può essere fatto in Java, non lo so. –

risposta

7

System.getProperty ("user.home") + File.separator + "Documenti";

E non preoccuparti con la localizzazione, guarda:

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

mio OS X è in spagnolo.

+1

Si scopre che la localizzazione di OS X funziona cambiando il nome visualizzato all'utente, non il nome file effettivo. Riferimento sotto. http://developer.apple.com/documentation/MacOSX/Conceptual/BPInternational/Articles/LocalizingPathnames.html#//apple_ref/doc/uid/20002141-BBCFJBFB – oldbeamer

+0

Rende la vita facile ma non sono sicuro che mi piaccia molto :) –

+0

La risposta migliore e più sicura è usare Mele FileManager –

0

su Mac (per quanto ne so tutti i recenti varianti 10.x) la cartella "My Documents" si trova a (da root):
/Users/< nome utente>/Documenti
quindi è in la sottodirectory "Documenti" all'interno della directory home dell'utente.

9

si desidera utilizzare eio.FileManager estensione di 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

Grazie, questo mi ha aiutato - ho avuto bisogno di trovare la cartella musicale dell'utente. L'estensione non è un download; è all'interno di JRE in bundle in Mac OS X. Pertanto, è necessario scrivere questo codice in modo riflessivo se si dispone di codice che deve essere compilato su altre piattaforme. Infine, un riferimento a tutti i tipi di cartella può essere trovato su http://walteriankaye.com/as/foldertypes.html –

+0

Oppure puoi scaricare uno stub dell'estensione, quindi creare una classe wrapper che viene sempre chiamata solo se la piattaforma è osx, questo evita di dover scrivere codice di riflessione. –

Problemi correlati