2009-02-20 7 views
7

Chciałbym utworzyć katalog w folderze „Dokumenty” użytkownika, ale do tej pory mam tylko znaleźć się jak dostać katalog domowy użytkownika:Jak znaleźć folder "Dokumenty" użytkownika z Javą w systemie OS X?

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

W Windows powyższy kod zwraca ' Katalog My Documents, który jest świetny, tam właśnie powinny trafić nowe dokumenty. W systemie OS X zwraca tylko katalog domowy.

Dodanie "Dokumentów" do zwróconej ścieżki może spowodować problemy z lokalizacją.

Jak mogę to zrobić?

+0

Właściwa metoda Objective-C jest omówiony w http://stackoverflow.com/questions/272544/whats-the- najlepszy sposób na znalezienie-użytkowników-dokumentów-katalog-na-iphone-jak/jeśli można to zrobić w Javie, nie wiem. –

Odpowiedz

7

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

I nie martwić się o lokalizacji, spójrz:

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

Mój OS X jest w języku hiszpańskim.

+1

Okazuje się, że lokalizacja OS X działa poprzez zmianę nazwy wyświetlanej użytkownikowi, a nie rzeczywistą nazwę pliku. Odniesienie poniżej. http://developer.apple.com/documentation/MacOSX/Conceptual/BPInternational/Articles/LocalizingPathnames.html#//apple_ref/doc/uid/20002141-BBCFJBFB – oldbeamer

+0

Ułatwia życie, ale nie jestem pewien, czy mi się podoba bardzo dużo :) –

+0

Najlepszą i najbezpieczniejszą odpowiedzią jest użycie Apples FileManager –

0

na Mac (o ile wiem, wszystkie ostatnie warianty 10.x) katalog „Moje dokumenty” znajduje się (z root):
/Users/< nazwa_użytkownika>/Dokumenty
Jest więc w podkatalog "Dokumenty" w katalogu domowym użytkownika.

9

Chcesz użyć Apple eio.FileManager rozszerzenia:

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

Dzięki, pomogło mi to - potrzebowałem go do znalezienia folderu muzycznego użytkownika. Rozszerzenie nie jest pobieraniem; jest w środowisku JRE z pakietem Mac OS X. Dlatego musisz napisać ten kod refleksyjnie, jeśli posiadasz kod, który musisz skompilować na innych platformach. Na koniec, odniesienie do wszystkich typów folderów można znaleźć na stronie http://walteriankaye.com/as/foldertypes.html –

+0

Możesz też pobrać końcówkę rozszerzenia, a następnie utworzyć klasę opakowania, która zostanie wywołana tylko wtedy, gdy platforma jest osx, to pozwala uniknąć pisania kodu odbicia. –

Powiązane problemy