Существует действительно полезное расширение, называемое « xdebug », что сделает ваши отчеты намного приятнее.
Мне нужно хранить данные в файлах внутри .jar-файла и читать его снова
blockquote>Нет, вы этого не делаете.
Вместо этого сохраните 'default 'файл внутри Jar. Если он изменен, сохраните измененный файл в другом месте. Одно общее место - подкаталог
user.home
. При проверке файла сначала проверьте наличие измененного файла в файловой системе, а если он не существует, загрузите файл по умолчанию.
Обратите внимание, что, как правило, лучше описывать а не стратегии. «Сохранить измененный файл в Jar» является стратегией, тогда как «Сохранить настройки между запусками» может быть целью.
Связано: Что является проблемой XY?
Class.getResource()
возвращает URL-адрес. Теоретически вы можете использовать этот URL для создания своих InputStream
и OutputStream
. Но в большинстве случаев сгенерированный JAR является файлом, доступным только для чтения (или архивом). Таким образом, ваше приложение может отключиться при попытке его использовать.
Вы можете манипулировать любым файлом jar с помощью пакета java.util.jar
(или действительно только java.util.zip
). Поскольку файлы внутри банки будут сжаты, это не самый эффективный способ time для хранения данных.
Вероятно, вы должны использовать каталог где-нибудь еще (например, System.getProperty("user.home") + "/.myProgram"
) или см. java.util.prefs
.
Вряд ли вы можете безопасно изменить загруженную банку. Изменение его во время его использования не является хорошей идеей.
Если вы хотите это сделать, используйте простой файловый системный каталог и добавьте / удалите из него файлы. Даже это может не работать так, как вы ожидаете.
Это не поддерживается. В принципе, вы можете работать с файлом jar, но нет гарантии, что новое содержимое будет правильно загружено. Пусть ваши инструменты сборки управляют файлом jar - и выберите что-то еще для постоянной памяти, управляемой вашей программой. Как файл.