2009-02-20 1 views
7

Я хотел бы создать папку в папке пользователя «Документы», но до сих пор я только узнал, как получить домашний каталог пользователя:Как найти папку «Документы» пользователя с Java в OS X?

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

В Windows выше код возвращает ' Каталог «Мои документы», и это здорово, именно там должны появиться новые документы. В OS X он возвращает только домашний каталог.

Добавление «Документов» к возвращенному пути может вызвать проблемы с локализацией.

Как это сделать?

+0

Правильный метод Objective-C обсуждается на http://stackoverflow.com/questions/272544/whats-the- best-way-to-find-the-users-documents-directory-on-a-iphone - как это сделать, если это можно сделать на Java, я не знаю. –

ответ

7

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

И не беспокойтесь о с локализацией, смотрите:

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

Мой OS X на испанском языке.

+1

Оказывается, что локализация OS X работает, изменяя имя, отображаемое пользователю, а не фактическое имя файла. Ссылка ниже. http://developer.apple.com/documentation/MacOSX/Conceptual/BPInternational/Articles/LocalizingPathnames.html#//apple_ref/doc/uid/20002141-BBCFJBFB – oldbeamer

+0

Делает жизнь легкой, но я не уверен, что ей это нравится очень :) :) –

+0

Самый лучший и безопасный ответ - использовать Apples FileManager –

0

На макинтош (насколько я знаю, все последние варианты 10.x) каталог «Мои документы» находится по адресу (от корня):
/Users/< имя пользователя>/Документы
Таким образом, находится в подкаталог «Документы» в домашнем каталоге для пользователя.

9

Вы хотите использовать расширение eio.FileManager от 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

Спасибо, это только помогло мне - мне нужно было найти музыкальную папку пользователя. Расширение не является загрузкой; он входит в состав JRE, поставляемого в Mac OS X. Поэтому вам необходимо написать этот код, если у вас есть код, который должен компилироваться на других платформах. Наконец, ссылку на все типы папок можно найти по адресу http://walteriankaye.com/as/foldertypes.html –

+0

Или вы можете загрузить заглушку расширения, а затем создать класс-оболочку, который только когда-либо вызывается, если платформа osx, это позволяет избежать необходимости писать код отражения. –