How can an app use files inside the JAR for read and write?
Как приложение может использовать файлы внутри JAR для чтения и записи?
Мне нужно сохранить данные в файлах внутри .файл jar и прочитать его снова.
Я знаю, что могу использовать Class.getResourceAsStream() метод, но он возвращает объект, из InputStream которого я могу прочитать. Но я ищу способ записи.
Переведено автоматически
Ответ 1
Мне нужно сохранить данные в файлах внутри .файл jar и прочитать его снова
Нет, вы этого не делаете.
Вместо этого сохраните файл по умолчанию внутри Jar. Если он изменен, сохраните измененный файл в другом месте. Одним из распространенных мест является подкаталог user.home. При проверке файла сначала проверьте наличие измененного файла в файловой системе, и если он не существует, загрузите файл по умолчанию.
Обратите внимание, что обычно лучше описывать цель, а не стратегию. "Сохранить измененный файл в Jar" - это стратегия, тогда как "Сохранять настройки между запусками" может быть целью.
На самом деле это не поддерживается. В принципе, вы могли бы работать с файлом jar, но нет гарантии, что новое содержимое будет загружено правильно. Позвольте вашим инструментам сборки управлять файлом jar - и выберите что-нибудь другое для постоянного хранилища, управляемого самой вашей программой. Например, файл.
Ответ 3
Маловероятно, что вы сможете безопасно изменять загруженный jar. Изменять его во время использования - плохая идея.
Если вы хотите это сделать, используйте обычный каталог файловой системы и добавляйте / удаляйте файлы из него. Даже это может работать не так, как вы ожидаете.
Ответ 4
Вы можете манипулировать любым файлом jar с помощью пакета java.util.jar (или даже просто java.util.zip). Поскольку файлы внутри jar будут сжаты, это не самый экономичный по времени способ хранения данных.
Вероятно, вам следует использовать каталог где-нибудь в другом месте (например, System.getProperty("user.home") + "/.myProgram") или посмотреть java.util.prefs.