2013-12-12 5 views
0

По некоторым причинам я не могу найти твердый пример онлайн о том, как сделать следующий, так что если кто-то здесь может помочь, что бы большойСжатие данных

я передача файлов через сокет в Java 6, и я бы например, для сжатия данных. Я заглянул в поток ввода ZIP и, хотя это кажется хорошим, у меня не было ничего, кроме проблемы с его работой. То, что я предпочел бы сделать это:

  1. Читать несжатый (нормальный) файл в байты [] массив
  2. В памяти, сожмите байты [] в другие байты [], который является почтовым индексом сжимается
  3. перенесите этот новый заархивированный байт [] поверх обычного OutputStream (нет подходящих классов deflater/inflater для обработки)
  4. На другом конце распакуйте zip обратно в исходный байт [] и напишите его в новый файл.

Я бы признателен за любые примеры того, как сделать эти 4 шага :)

Вот почему я предпочел бы не использовать Zip IO Stream: Problems with using ZipOutputStream and ObjectOutputStream

ответ

0

Вы можете использовать ZipInputStream доступны Ява. Вот следующие классы, которые вы можете использовать, чтобы сделать то, что вы хотите

ZipInputStream ZipOutputStream

Если вы работали раньше на IO Streams, это торт ходьбы. Дайте мне знать, если вы все еще не можете заставить его работать.

+0

Как я уже упоминал в своем вопросе, я попытался использовать ZipInputStream и продолжал возникать проблемы с ним. Я предпочел бы просто сжать данные сначала, а затем отправить данные по выходному потоку отдельно. http://stackoverflow.com/q/18521810/1582712 –

0

Имеется множество компрессионных пакетов, доступных в Интернете. Вы можете попробовать посмотреть этот: https://code.google.com/p/kanzi/. Данные могут быть сжаты в виде потока или буфера: E.G. создать CompressedOutputStream и записать в него данные: cos.write (array, 0, len); Для достижения цели скорости и степени сжатия можно указать различные общие методы сжатия. Здесь есть полный пример: https://code.google.com/p/kanzi/source/browse/java/src/kanzi/test/TestBlockCoder.java

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