zoukankan      html  css  js  c++  java
  • java GZIP压缩与解压缩

    1.GZIP压缩

    复制代码
        public static byte[] compress(String str, String encoding) {
            if (str == null || str.length() == 0) {
                return null;
            }
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            GZIPOutputStream gzip;
            try {
                gzip = new GZIPOutputStream(out);
                gzip.write(str.getBytes(encoding));
                gzip.close();
            } catch ( Exception e) {
                e.printStackTrace();
            }
            return out.toByteArray();
        }
    复制代码

    2.GZIP解压缩

    复制代码
        public static byte[] uncompress(byte[] bytes) {
            if (bytes == null || bytes.length == 0) {
                return null;
            }
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            ByteArrayInputStream in = new ByteArrayInputStream(bytes);
            try {
                GZIPInputStream ungzip = new GZIPInputStream(in);
                byte[] buffer = new byte[256];
                int n;
                while ((n = ungzip.read(buffer)) >= 0) {
                    out.write(buffer, 0, n);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return out.toByteArray();
        }
    复制代码

    3.工具代码集合

    复制代码
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.util.zip.GZIPInputStream;
    import java.util.zip.GZIPOutputStream;
    
    public class GZIPUtils  {
        public static final String GZIP_ENCODE_UTF_8 = "UTF-8"; 
        public static final String GZIP_ENCODE_ISO_8859_1 = "ISO-8859-1";
    
        
        public static byte[] compress(String str, String encoding) {
            if (str == null || str.length() == 0) {
                return null;
            }
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            GZIPOutputStream gzip;
            try {
                gzip = new GZIPOutputStream(out);
                gzip.write(str.getBytes(encoding));
                gzip.close();
            } catch ( Exception e) {
                e.printStackTrace();
            }
            return out.toByteArray();
        }
        
        public static byte[] compress(String str) throws IOException {  
            return compress(str, GZIP_ENCODE_UTF_8);  
        }
        
        public static byte[] uncompress(byte[] bytes) {
            if (bytes == null || bytes.length == 0) {
                return null;
            }
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            ByteArrayInputStream in = new ByteArrayInputStream(bytes);
            try {
                GZIPInputStream ungzip = new GZIPInputStream(in);
                byte[] buffer = new byte[256];
                int n;
                while ((n = ungzip.read(buffer)) >= 0) {
                    out.write(buffer, 0, n);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return out.toByteArray();
        }
        
        public static String uncompressToString(byte[] bytes, String encoding) {  
            if (bytes == null || bytes.length == 0) {  
                return null;  
            }  
            ByteArrayOutputStream out = new ByteArrayOutputStream();  
            ByteArrayInputStream in = new ByteArrayInputStream(bytes);  
            try {
                GZIPInputStream ungzip = new GZIPInputStream(in);  
                byte[] buffer = new byte[256];  
                int n;  
                while ((n = ungzip.read(buffer)) >= 0) {  
                    out.write(buffer, 0, n);  
                }  
                return out.toString(encoding);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
        
        public static String uncompressToString(byte[] bytes) {  
            return uncompressToString(bytes, GZIP_ENCODE_UTF_8);  
        } 
        
        public static void main(String[] args) throws IOException {
            String s = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            System.out.println("字符串长度:"+s.length());
            System.out.println("压缩后::"+compress(s).length);
            System.out.println("解压后:"+uncompress(compress(s)).length);
            System.out.println("解压字符串后::"+uncompressToString(compress(s)).length());
        }
    }
    复制代码
  • 相关阅读:
    mysql字节乱码问题之解决方法
    tracert nbtstat nslookup arp指令用法及示例
    Java ThreadLocal示例及使用方法总结
    C# Undo Redo
    自定义过滤器
    C#粘贴复制数据库中的内容
    分布式数据同步
    创建路径(c#)动态分段
    构建网络数据集(c#)
    创建一个栅格图层
  • 原文地址:https://www.cnblogs.com/zhuyeshen/p/12160741.html
Copyright © 2011-2022 走看看