• 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());
        }
    }
    复制代码
  • 相关阅读:
    STL之vector详解
    vim下使用YouCompleteMe实现代码提示、补全以及跳转设置
    Ceph之数据分布:CRUSH算法与一致性Hash
    ceph之crush算法示例
    Js正则Replace方法
    JS框架设计之加载器所在路径的探知一模块加载系统
    JS模块加载系统设计V1
    JS框架设计之模块加载系统
    Builder生成器(创建型模式)
    JS框架设计之主流框架的引入机制DomeReady一种子模块
  • 原文地址:https://www.cnblogs.com/zhuyeshen/p/12160741.html
Copyright © 2020-2023  润新知