Я делал 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
ответ
Для настроек конфигурации существует API-интерфейс Java.
Для других файлов я не нашел для этого решения. Лучшим решением в настоящее время является, вероятно, отправка по типу ОС с резервностью на основе свойства user.home
.
В Linux/Unix (не Mac) вы можете почитать XDG Base Directory specification.
Должна не путь, как эта работа везде, то есть без если-иначе-если:
String userHome = System.getProperty("user.home");
if (!userHome.endsWith("/")) {
userHome += "/";
}
String targetPath = userHome + ".myapp/settings.properties";
Это должно работать повсюду, но оно не соответствует стандартным местоположениям для хранения предпочтений (например, user.home/AppData/roaming/appName/в Windows). –
Java Preferences API был создан специально для этой цели.
Действительно ли необходимо хранить эти файлы в определенном месте? – Smit
См. Также: 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 для апплетов. –