Лучшее место для сохранения файла конфигурации программы в Windows и OS X с использованием Java? - PullRequest
4 голосов
/ 21 августа 2009

У меня есть приложение SWT Java, которое работает в Windows XP / Vista / 7 и Mac OS X. В настоящее время я сохраняю файл конфигурации в:

System.getProperty ("user.home") + имя файла

С изменениями в безопасности в Windows Vista и Windows 7, похоже, это не лучшее место для его сохранения.

Этот файл сохраняет информацию, такую ​​как информация о ключе регистрации, и это раздражает моих пользователей, если файл не может быть сохранен или удален.

Есть ли лучший путь, который я должен использовать?

Кроме того, каков предпочтительный путь для данных пользовательских приложений в Mac OS X?

Ответы [ 3 ]

2 голосов
/ 22 августа 2009

Путь OSX для сохраняемых данных приложения - «~ / Библиотека / Поддержка приложений» согласно Документация Apple

2 голосов
/ 21 августа 2009

Какие изменения в безопасности? Я понимаю, что они запрещали писать в Program Files, я не знал, что они запрещают писать в домах пользователей.
Это было бы серьезным нарушением совместимости, у меня есть несколько приложений, пишущих там, либо непосредственно файл, либо в папке («скрытой» в режиме Unix, то есть с префиксом в виде точки).
Теперь, кажется, более «дружелюбно» писать в папке «Application Data» , как и ряд других приложений (но редко кросс-платформенных приложений, которые, кажется, используют предыдущее решение ...), но точный расположение в Java трудно найти, и для других операций на других платформах потребуется определение платформы.

Альтернативой представляется использование Preferences API , т.е. java.util.prefs.Preferences .

0 голосов
/ 21 августа 2009

У самой Sun с панелью управления Java была та же проблема ( ошибка 6487334) : их панель управления, работающая с разным уровнем целостности, не могла одновременно выполнять чтение / запись в свои каталоги развертывания.

Они переместили его в c:\users\<username>\appdata\local, но не должны были полагаться на System.getProperty("user.home"), потому что по сей день он использует КЛЮЧ реестра, который может быть установлен в неверное значение, если windows "настроен": ошибка 6519127

Итак, вопрос Как получить локальную папку данных приложения в Java? , использование HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\* - это то самое место, где можно начать поиск доступа для чтения / записи для ваших настроек.
Вы можете прочитать его, например, SWT Win32 Extension project.

Интерес к хранению ваших данных в домашнем каталоге пользователя заключается в том, что они будут частью профиля пользователя, который может быть роуминг профиль , сохраненным при выходе из системы и восстановленным при входе в систему ( используется на рабочих станциях корпорации довольно часто)

...