ZipSerializer.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package com.yiidata.proxyserver.common.serializer;
  2. import org.apache.commons.compress.compressors.CompressorException;
  3. import org.apache.commons.compress.compressors.CompressorInputStream;
  4. import org.apache.commons.compress.compressors.CompressorOutputStream;
  5. import org.apache.commons.compress.compressors.CompressorStreamFactory;
  6. import org.apache.commons.io.IOUtils;
  7. import java.io.ByteArrayInputStream;
  8. import java.io.ByteArrayOutputStream;
  9. import java.io.IOException;
  10. /**
  11. * <pre>
  12. * Created with IntelliJ IDEA.
  13. * User: zhzhenqin
  14. * Date: 2015/2/27
  15. * Time: 10:48
  16. * </pre>
  17. *
  18. * @author zhzhenqin
  19. */
  20. public class ZipSerializer extends CompressSerializer {
  21. public ZipSerializer() {
  22. }
  23. @Override
  24. public byte[] compress(byte[] bytes) {
  25. ByteArrayOutputStream out = new ByteArrayOutputStream();
  26. try {
  27. CompressorOutputStream outputStream = new CompressorStreamFactory().createCompressorOutputStream(
  28. CompressorStreamFactory.BZIP2, out);
  29. IOUtils.copy(new ByteArrayInputStream(bytes), outputStream);
  30. outputStream.close();
  31. return out.toByteArray();
  32. } catch (IOException e) {
  33. throw new IllegalStateException(e);
  34. } catch (CompressorException e) {
  35. throw new IllegalStateException(e);
  36. }
  37. }
  38. @Override
  39. public byte[] uncompress(byte[] bytes) {
  40. CompressorInputStream inputStream = null;
  41. try {
  42. inputStream = new CompressorStreamFactory().createCompressorInputStream(
  43. CompressorStreamFactory.BZIP2, new ByteArrayInputStream(bytes));
  44. ByteArrayOutputStream out = new ByteArrayOutputStream();
  45. IOUtils.copy(inputStream, out);
  46. inputStream.close();
  47. return out.toByteArray();
  48. } catch (IOException e) {
  49. throw new IllegalStateException(e);
  50. } catch (CompressorException e) {
  51. throw new IllegalStateException(e);
  52. }
  53. }
  54. }