GZipSerializer.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. *
  12. * GZip 压缩
  13. *
  14. * <pre>
  15. * Created with IntelliJ IDEA.
  16. * User: zhzhenqin
  17. * Date: 2015/2/27
  18. * Time: 10:48
  19. * </pre>
  20. *
  21. * @author zhzhenqin
  22. */
  23. public class GZipSerializer extends CompressSerializer {
  24. public GZipSerializer() {
  25. }
  26. @Override
  27. public byte[] compress(byte[] bytes) {
  28. ByteArrayOutputStream out = new ByteArrayOutputStream();
  29. try {
  30. CompressorOutputStream outputStream = new CompressorStreamFactory().createCompressorOutputStream(
  31. CompressorStreamFactory.GZIP, out);
  32. IOUtils.copy(new ByteArrayInputStream(bytes), outputStream);
  33. outputStream.close();
  34. return out.toByteArray();
  35. } catch (IOException e) {
  36. throw new IllegalStateException(e);
  37. } catch (CompressorException e) {
  38. throw new IllegalStateException(e);
  39. }
  40. }
  41. @Override
  42. public byte[] uncompress(byte[] bytes) {
  43. CompressorInputStream inputStream = null;
  44. try {
  45. inputStream = new CompressorStreamFactory().createCompressorInputStream(
  46. CompressorStreamFactory.GZIP, new ByteArrayInputStream(bytes));
  47. ByteArrayOutputStream out = new ByteArrayOutputStream();
  48. IOUtils.copy(inputStream, out);
  49. inputStream.close();
  50. return out.toByteArray();
  51. } catch (IOException e) {
  52. throw new IllegalStateException(e);
  53. } catch (CompressorException e) {
  54. throw new IllegalStateException(e);
  55. }
  56. }
  57. }