Хранение файла в каталоге пользователя в кроссплатформенной Java

У меня есть приложение Java, которое работает на Mac и Windows прямо с CD/DVD без установки. Теперь мне нужно сохранить файл, содержащий данные для каждого пользователя (например, избранное и т. д.), где-то в локальной файловой системе, чтобы его можно было записать.

Итак, где, по-вашему, хорошее место для этого файла? Я думаю что-то вроде:

<USER_DOCUMENTS_AND_SETTINGS>/application data/myapp/favourites.db для Windows <USER_HOME_DIR>/.myapp/favourites.db для Mac/Nix

Мысли? И кто-нибудь знает, как лучше всего определить эти пути в Java?


person dalyons    schedule 15.10.2009    source источник


Ответы (4)


Как и user.home, следующее полезно для временного хранения файлов:

System.getProperty("java.io.tmpdir")
person oxbow_lakes    schedule 15.10.2009

Используйте Java Preferences API, разработанный специально для хранения значений пользовательских настроек независимым от платформы способом, который нам всем нравится. Java позаботится об их сохранении и извлечении из файла или другого backup store в зависимости от ОС.

Эти руководства может помочь вам

person n002213f    schedule 15.10.2009
comment
Я уже использую API предпочтений для некоторых настроек, но это файл, который нужно хранить (файл db), а не строковый параметр. - person dalyons; 15.10.2009
comment
я считаю, что favorites.db содержит пары ключ-значение для настроек. - person n002213f; 15.10.2009

Вы можете хранить данные в перемещаемом каталоге. под Windows.

person denis.zhdanov    schedule 15.10.2009

person    schedule
comment
и я просто добавляю к этому данные /Application? имя этой папки когда-либо меняется в зависимости от локализации? - person dalyons; 15.10.2009
comment
System.getProperty(user.home) + File.separator + Данные приложения; - person RichardOD; 15.10.2009