2013-06-05 5 views
-3

У меня проблема. В настоящее время я разрабатываю видео-игру на языке Java. В настоящий момент файлы данных занимают около 100 МБ пространства, хотя игровой мир невелик. Я хочу, чтобы эти текстовые файлы zip защищали их паролем или каким-то шифрованием, но я не могу найти для этого никакой хорошей и бесплатной библиотеки.Сжатие данных строки Java

Или, может быть, можно упаковать данные в какой-то архив без внешних библиотек?

Update Я пытался скачать Zip4j, но это показывает, что мне нужно вложение источника и я не могу найти на сайте библиотеки.

+0

http://docs.oracle.com/javase/6/docs/api/java/util/zip/package-summary.html? – creinig

+0

Вы посмотрели пакет java.util.zip? Я не думаю, что защита паролем поддерживается, но вы могли бы зашифровать весь zip-файл. –

+0

У JDK уже есть API для чтения/записи в ZIP-файлы. Что касается защиты игровых данных, почему вы хотите это сделать? – fge

ответ

0

Вы можете сжать йор игровых данных с объектами, предусмотренных в JDK:

  • java.util.ZipFile и смежных классы обрабатывать нормальные почтовые файлы
  • java.util.GZIPInput/OutputStream для сжатия данных напрямую (без «каталога файлов», просто blob).
  • java.util.DeflaterInput/OutputStream (как GZIP)

Там существует множество классов сжатия третьей стороны. Мне лично нравится XZ для Java, потому что он обеспечивает отличные коэффициенты сжатия и прост в использовании через стандартный интерфейс потока (http://tukaani.org/xz/java.html).

Для шифрования существуют потоки шифрования, которые используются так же, как потоки сжатия. Остерегайтесь того, что кто-то сможет извлечь «ключ» из ваших игровых файлов с небольшим количеством знаний и терпения, если они действительно этого захотят.

0

Java предоставляет несколько функций, которые сжимают данные, такие как: GZIPInputStream и GZIPOutputStream

вы также можете использовать почтовый индекс с ZipFile (java.util.zip)

Для шифрования вы можете написать свой собственный FilterOutputStream и FilterInputStream, где вы используете шифр для его шифрования.

Эти функции работают без внешних библиотек.

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