Как обрабатывать активы в одном файле в виртуальной файловой системе на Java - PullRequest
0 голосов
/ 31 декабря 2011

Я занимаюсь разработкой небольшой игры на Java, и все мои файлы упакованы в папку с именем data, и мое приложение читает их.Однако я хочу упаковать эти файлы в один файл .pak, .zip и т. Д. И использовать его при распространении файлов.Моя игра запланирована для разных пакетов, поэтому предпочтительнее иметь один файл вместо папки, содержащей много файлов.Я посмотрел на сжатие / распаковку Zip, но я просто хочу создать виртуальную файловую систему для их чтения, без сжатия или защиты не требуется.

Что вы предлагаете?Есть ли доступная библиотека виртуализации?Также важно, чтобы мои пакеты легко создавались.

Ответы [ 2 ]

2 голосов
/ 31 декабря 2011

Обычный способ - сохранить ваши активы вместе с файлами .class (в 99% случаев это означает, что они попадают в исполняемый вами jar-файл); таким образом они могут быть прочитаны загрузчиком классов. Это гарантирует, что когда вы измените способ упаковки или запуска вашей игры из взорванного каталога, ресурсы будут найдены:

package pl.alx.example;

class Whatever {
   public Whatever(){
      // I assume that you keep your image in the same folder as Whatever
      InputStream is = this.getClass().getResourceAsStream("/pl/alx/example/file.png");
      // read the png

   }
}

Если по какой-то причине вы настаиваете на том, чтобы хранить скомпилированные классы и ресурсы в отдельных файлах, вы все равно можете использовать эту технику - просто добавьте банку с ресурсами в ваш путь к классам (ваша IDE сделает это за вас).

2 голосов
/ 31 декабря 2011

Я бы поместил ваши файлы данных в те же каталоги, что и ваши классы, и затем вы можете прочитать их, используя classpath (то есть Class.getResourceAsStream ()), таким образом вы можете упаковать свое приложение, включая все данные, в один файл Jar.

Если вы используете Maven, вы должны поместить его в раздел resources.

Если вы хотите распространять их отдельно, тогда вы можете делать по сути то же самое, просто распространять свое приложение в двух файлах Jar, один для кода и один для данных. Поместите их обоих в путь к классам, и вы сможете получить доступ к своим данным с помощью только что описанных мной средств. Затем вы можете освободить и построить часть данных вашего приложения отдельно.

...