Как выбрать местоположение файла журнала для приложения Java независимым от платформы способом? - PullRequest
1 голос
/ 18 июля 2010

Я пишу Java-приложение. В настоящее время создается файл с именем «trace.txt» в том же каталоге, в котором находится файл .jar. Иногда это может вызвать проблемы с правами доступа к файлам, например, запись в C: \ Program Files \ Foo \ trace.txt.

После небольшого исследования SO кажется, что общее мнение состоит в том, чтобы войти в Application Data \ Foo \ для данного пользователя. Это не будет то же место для других ОС.

Какая лучшая практика в этой ситуации? Я использую java.util.logging.

Ответы [ 3 ]

3 голосов
/ 18 июля 2010

Вы всегда можете использовать USER_HOME, обозначенный ~ в Linux или

System.getProperty ( "user.home"); в Яве.

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

Это будет отображаться в /home/user/.myapp в Linux или C: / Documents and settings / user / .myapp в Windows, и всегда должно быть доступно для записи.

1 голос
/ 18 июля 2010

Если это «настоящий» файл журнала или трассировки, я бы записал его в Путь к временному файлу по умолчанию , который можно получить через системное свойство java.io.tmpdir.

0 голосов
/ 18 июля 2010

Если ваша java-программа требует «установки» (это может быть просто настройка некоторых файлов конфигурации, перемещение вашего бинарного файла в определенное место и т. Д.), Тогда вполне нормально обрабатывать разрешения (на любой платформе) во время установки или другихспецифичные для платформы вещи для любых файлов журналов, конфигураций, кеширующих пользовательских настроек и т. д. Установка обычно подразумевает, что пользователь должен запустить установочный скрипт / программу с привилегиями суперпользователя.Итак, вы можете сделать это.

Обычно, если ваше приложение хранит пользовательские данные, вы можете сохранить их в / home //.в Linux как system и Users \ ttchong \ AppData в Windows 7, например (я не очень знаком с Window, поправьте меня, если я ошибаюсь).И ваш код также должен обрабатывать путь пользователя, чтобы позволить нескольким пользователям иметь разные настройки вашей программы.

Иначе, если это информация о программе, такая как файлы журнала, которую вы не против собрать вместе, я все же предпочитаюкак вы делаете это сейчас, сохраните его с тем же каталогом вашего jar-файла или чуть лучше в папке журнала в том же каталоге с помощью трюка «установки».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...