2013-04-12 3 views
0

Я делал Java-игру, в которой хранятся параметры и банки LWJGL в стандартном каталоге хранения данных приложения (я думаю, что это C: \ Users \ user \ AppData \ roaming \ application в Windows, ~ /. приложение на Linux и ~/Library/Preferences на Mac). В настоящее время я просто использую System.getProperty (os.name) и имею if-else, чтобы выбрать правильный путь к файлу (который использует system.getProperty (user.home) и добавляет к нему правильный путь к файлу). Однако это может не работать на некоторых странных ОС, потому что if-else не будет находить Windows, Mac или Linux в названии ОС, и это также кажется очень плохим способом сделать это в целом (также if- else предполагает, что ОС - это Linux, если это не Windows или Mac). Я попытался декомпилировать Minecraft, который хранит данные приложения и банки LWJGL в правильном пути, но код запутан. Есть ли лучший способ для меня сделать это, или я должен придерживаться if-else на os.name?Платформа независимого хранения файлов Java

+0

Действительно ли необходимо хранить эти файлы в определенном месте? – Smit

+1

См. Также: 1) ['Preferences'] (http://docs.oracle.com/javase/7/docs/api/java/util/prefs/Preferences.html) *« Этот класс позволяет приложениям хранить и извлекать пользовательских и системных предпочтений и данных конфигурации. Эти данные постоянно хранятся в хранилище поддержки, зависящем от реализации ». * 2) [' PersistenceService'] (http://pscode.org/jws/api.html#bs) для JWS Программы. 3) Cookies для апплетов. –

ответ

1

Для настроек конфигурации существует API-интерфейс Java.

Для других файлов я не нашел для этого решения. Лучшим решением в настоящее время является, вероятно, отправка по типу ОС с резервностью на основе свойства user.home.

В Linux/Unix (не Mac) вы можете почитать XDG Base Directory specification.

0

Должна не путь, как эта работа везде, то есть без если-иначе-если:

String userHome = System.getProperty("user.home"); 
if (!userHome.endsWith("/")) { 
    userHome += "/"; 
} 

String targetPath = userHome + ".myapp/settings.properties"; 
+0

Это должно работать повсюду, но оно не соответствует стандартным местоположениям для хранения предпочтений (например, user.home/AppData/roaming/appName/в Windows). –