2016-05-30 3 views
0

Я, наконец, закончил программу на Java, и я должен ее загрузить. Проблема в том, что я должен загрузить также исполняемый файл .jar, а не только проект eclipse.Чтение и запись файлов в Jar

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

-project Имя

  • в исходные тексты
    • пакетов по умолчанию
      • главные и все другие классы
  • file1.xml
  • file2.xml

Таким образом, два XML-файлы находятся в корневом каталоге проекта.

Мой вопрос: лучше сохранить XML-файлы в JAR, а затем записать и прочитать их из исполняемой программы или лучше хранить их в папке вне .JAR и читать и записывать их как внешние файлы?

Это хорошая практика, чтобы создать папку, как что ?:

-ProjectName

  • file1.xml
  • file2.xml
  • project.jar

Я читал в Stackoverflow много людей, имеющих мою проблему, и многие люди не знают, как правильно управлять этой проблемой.

Заранее спасибо за ответ :)

+0

Это действительно зависит, хотите ли вы когда-либо изменить эти файлы. Что такое файлы XML? –

+0

Да, я хочу их изменить, например, для добавления новых пользователей используется один файл. –

+0

его все, что нужно сохранить, любые файлы, которые вы хотите прочитать во время выполнения вне «jar», так как может быть случай, вы можете изменить файл позже и почесывать голову, почему не отражается в программе – piyushj

ответ

1

Вы можете прочитать XML файл, расположенный внутри исполняемого Jar, но это не представляется возможным обновить (запись) в XML-файл, расположенный внутри этого исполняемого файла Jar. Таким образом, наилучший вариант был бы: -

-ProjectName  
    file1.xml 
    file2.xml 
    project.jar 
1

Сосуд должен быть только для чтения, в XML «файлы» внутри банка должна быть считана с помощью getResource[AsStream] (класса пути). Вы можете использовать эти ресурсы в качестве шаблонов для создания копии в каталоге/подкаталоге пользователя (или приложения). Для каталога пользователя:

System.getProperty("user.home") 
2

Изменение файлов в JAR-файлах может иметь всевозможные проблемы. Это начинается с простых вещей, например, что должно произойти, когда вы хотите обновить свою программу до самой новой версии? Обычно вы просто меняете банку, но затем вы теряете все, что вы редактировали до сих пор. Вам понадобится процесс обновления внутри банки.

Другие проблемы включают в себя то, что для изменения файла jar вам нужно его открыть, возможно, перестроить содержимое и переписать индекс, который может конфликтовать с JVM, который одновременно читает банку, вызывая нечетное поведение. В некоторых системах (окна ...) файл Jar может быть даже заблокирован во время работы приложения и, следовательно, вы вообще не можете его писать.

Я предлагаю вам добавить «файлы по умолчанию» (в случае, если ваши файлы изначально не просто пусты) вам Jar-файл, который представляет начальное состояние. Если приложение запущено, вы проверяете, существуют ли файлы XML в некотором обычном записываемом каталоге и если они не просто копируют файлы по умолчанию в этот каталог. Это позволяет развернуть все еще только один файл jar, но после запуска будут созданы соответствующие файлы.

Смежные вопросы