2015-08-22 2 views
0

Я создал executable jar из javaFX application с использованием Eclipse.
Проект hiearchy до создания executable jar.Как исполняемый jar копирует содержимое папки относительных ресурсов в локальную файловую систему и наоборот

 --------Project_Name 

       ------------src 

          ---------(default package) 
            -----------------Main.java 

          ---------data(folder) 

          ---------Resources(folder) 
            ---------mongod.exe 

Применение FLOW:

  • Когда пользователь дважды щелкните на executable jar приложение сначала создать папку, имеющую имя mongodb в пространстве пользователя (локальную файловую систему, или системную папку или внешними по отношению к банку) в C привод для Windows , затем скопируйте Resources содержимое папки в этот каталог monogdb e: g C:\mongodb.
  • Вторая проверка его data папка внутри jar. Если его пустая папка db в C диск в пространстве пользователя (локальная файловая система или внешняя к банке) e: g C:\db. и если его не пусто, создайте папку db в пользовательском пространстве (локальная файловая система или внешняя к банке) e: g C:\db и скопируйте папку data в папку (внутри папки jar) до db (пользовательское пространство или локальная папка). и удалите data папку (внутри папки jar) содержимое.

  • Применения сохраняет текстовые файлы в mongodb базы данных и имеет имя menu bar варианта Send to USB по щелчку на Отправить Usb отправит локальную папку файловой системы db (которая C диска е: г C:\db) содержание (содержание будет файлы) в data папка, которая находится внутри jar.

Вопрос

  1. Можно ли скопировать содержимое папки, которая находится внутри jar в локальную папку, или наоборот, если да, то как ??
  2. Можно ли удалить содержимое папки внутри jar ??
  3. Есть ли какой-либо метод, например, getResourceStream (используется для получения файлов относительных ресурсов), который может получить путь к реальной реализации папки для цели копирования?
  4. Или я должен использовать Ant Task или Maven для этого, если да, то любезно предоставите конкретный контент ????
  5. Любая другая стратегия для достижения этого?

ответ

0

Во время выполнения нет эффективного способа обработки внутренней части вашего файла jar в пути к классам в виде файловой системы и копирования. API-интерфейс classpath не рассматривает пакеты как каталоги. Тогда есть два направления, на которые вы можете пойти.

  1. Положите эти ресурсы в дегтя или банку внутри вашей банку, а затем использовать обычные библиотеки с открытым исходным кодом (Обще-компресс, и т.д.), чтобы читать их в путь к классам и записи их в файловую систему.
  2. Если вы уверены, что ваш файл jar будет использоваться в простом скучном URLClassLoader, вы можете проанализировать java.class.укажите системное свойство пути, найдите там свой путь в jar, откройте для него свой собственный поток ввода, а затем используйте стандартные классы Java для чтения файла Jar, чтобы прочитать что-то из него (и затем вы можете написать их там, где вам нравится).