Как правильно загрузить .properties на распространяемый файл jar? [Дубликат]

Существует действительно полезное расширение, называемое « xdebug », что сделает ваши отчеты намного приятнее.

31
задан informatik01 29 October 2013 в 07:45
поделиться

5 ответов

Мне нужно хранить данные в файлах внутри .jar-файла и читать его снова

Нет, вы этого не делаете.

Вместо этого сохраните 'default 'файл внутри Jar. Если он изменен, сохраните измененный файл в другом месте. Одно общее место - подкаталог user.home. При проверке файла сначала проверьте наличие измененного файла в файловой системе, а если он не существует, загрузите файл по умолчанию.


Обратите внимание, что, как правило, лучше описывать а не стратегии. «Сохранить измененный файл в Jar» является стратегией, тогда как «Сохранить настройки между запусками» может быть целью.

Связано: Что является проблемой XY?

93
ответ дан Andrew Thompson 22 August 2018 в 02:19
поделиться
  • 1
    +1 Удивительное примечание в конце. – asgs 12 August 2011 в 11:33
  • 2
    Я просто хочу, чтобы люди поняли эту заметку, чтобы мне не приходилось постоянно ее предлагать (часто это не очень хорошо - BTW;). – Andrew Thompson 12 August 2011 в 11:54
  • 3
    Все, что называется стратегией, также может быть целью, поскольку программы могут быть данными. – Hernán Eche 16 August 2016 в 15:58

Class.getResource() возвращает URL-адрес. Теоретически вы можете использовать этот URL для создания своих InputStream и OutputStream. Но в большинстве случаев сгенерированный JAR является файлом, доступным только для чтения (или архивом). Таким образом, ваше приложение может отключиться при попытке его использовать.

1
ответ дан Binaek Sarkar 22 August 2018 в 02:19
поделиться

Вы можете манипулировать любым файлом jar с помощью пакета java.util.jar (или действительно только java.util.zip). Поскольку файлы внутри банки будут сжаты, это не самый эффективный способ time для хранения данных.

Вероятно, вы должны использовать каталог где-нибудь еще (например, System.getProperty("user.home") + "/.myProgram") или см. java.util.prefs.

2
ответ дан OrangeDog 22 August 2018 в 02:19
поделиться

Вряд ли вы можете безопасно изменить загруженную банку. Изменение его во время его использования не является хорошей идеей.

Если вы хотите это сделать, используйте простой файловый системный каталог и добавьте / удалите из него файлы. Даже это может не работать так, как вы ожидаете.

3
ответ дан Peter Lawrey 22 August 2018 в 02:19
поделиться

Это не поддерживается. В принципе, вы можете работать с файлом jar, но нет гарантии, что новое содержимое будет правильно загружено. Пусть ваши инструменты сборки управляют файлом jar - и выберите что-то еще для постоянной памяти, управляемой вашей программой. Как файл.

3
ответ дан Vance Maverick 22 August 2018 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: