zoukankan      html  css  js  c++  java
  • JAVA对字符串的压缩与解压缩

    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.util.zip.GZIPInputStream;
    import java.util.zip.GZIPOutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    import java.util.zip.ZipOutputStream;
    
    public class ZipUtils {
    
    /**
    
    * 使用gzip进行压缩
    */
    public static String gzip(String primStr) {
    if (primStr == null || primStr.length() == 0) {
    return primStr;
    }
    
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    
    GZIPOutputStream gzip=null;
    try {
    gzip = new GZIPOutputStream(out);
    gzip.write(primStr.getBytes());
    } catch (IOException e) {
    e.printStackTrace();
    }finally{
    if(gzip!=null){
    try {
    gzip.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    
    
    return new sun.misc.BASE64Encoder().encode(out.toByteArray());
    }
    
    /**
    *
    * <p>Description:使用gzip进行解压缩</p>
    * @param compressedStr
    * @return
    */
    public static String gunzip(String compressedStr){
    if(compressedStr==null){
    return null;
    }
    
    ByteArrayOutputStream out= new ByteArrayOutputStream();
    ByteArrayInputStream in=null;
    GZIPInputStream ginzip=null;
    byte[] compressed=null;
    String decompressed = null;
    try {
    compressed = new sun.misc.BASE64Decoder().decodeBuffer(compressedStr);
    in=new ByteArrayInputStream(compressed);
    ginzip=new GZIPInputStream(in);
    
    byte[] buffer = new byte[1024];
    int offset = -1;
    while ((offset = ginzip.read(buffer)) != -1) {
    out.write(buffer, 0, offset);
    }
    decompressed=out.toString();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (ginzip != null) {
    try {
    ginzip.close();
    } catch (IOException e) {
    }
    }
    if (in != null) {
    try {
    in.close();
    } catch (IOException e) {
    }
    }
    if (out != null) {
    try {
    out.close();
    } catch (IOException e) {
    }
    }
    }
    
    return decompressed;
    }
    
    /**
    * 使用zip进行压缩
    * @param str 压缩前的文本
    * @return 返回压缩后的文本
    */
    public static final String zip(String str) {
    if (str == null)
    return null;
    byte[] compressed;
    ByteArrayOutputStream out = null;
    ZipOutputStream zout = null;
    String compressedStr = null;
    try {
    out = new ByteArrayOutputStream();
    zout = new ZipOutputStream(out);
    zout.putNextEntry(new ZipEntry("0"));
    zout.write(str.getBytes());
    zout.closeEntry();
    compressed = out.toByteArray();
    compressedStr = new sun.misc.BASE64Encoder().encodeBuffer(compressed);
    } catch (IOException e) {
    compressed = null;
    } finally {
    if (zout != null) {
    try {
    zout.close();
    } catch (IOException e) {
    }
    }
    if (out != null) {
    try {
    out.close();
    } catch (IOException e) {
    }
    }
    }
    return compressedStr;
    }
    
    /**
    * 使用zip进行解压缩
    * @param compressed 压缩后的文本
    * @return 解压后的字符串
    */
    public static final String unzip(String compressedStr) {
    if (compressedStr == null) {
    return null;
    }
    
    ByteArrayOutputStream out = null;
    ByteArrayInputStream in = null;
    ZipInputStream zin = null;
    String decompressed = null;
    try {
    byte[] compressed = new sun.misc.BASE64Decoder().decodeBuffer(compressedStr);
    out = new ByteArrayOutputStream();
    in = new ByteArrayInputStream(compressed);
    zin = new ZipInputStream(in);
    zin.getNextEntry();
    byte[] buffer = new byte[1024];
    int offset = -1;
    while ((offset = zin.read(buffer)) != -1) {
    out.write(buffer, 0, offset);
    }
    decompressed = out.toString();
    } catch (IOException e) {
    decompressed = null;
    } finally {
    if (zin != null) {
    try {
    zin.close();
    } catch (IOException e) {
    }
    }
    if (in != null) {
    try {
    in.close();
    } catch (IOException e) {
    }
    }
    if (out != null) {
    try {
    out.close();
    } catch (IOException e) {
    }
    }
    }
    return decompressed;
    }
    }
  • 相关阅读:
    例题6-8 Tree Uva548
    例题6-7 Trees on the level ,Uva122
    caffe Mac 安装
    Codeforces Round #467 (Div. 1) B. Sleepy Game
    Educational Codeforces Round37 E
    Educational Codeforces Round 36 (Rated for Div. 2) E. Physical Education Lessons
    Good Bye 2017 E. New Year and Entity Enumeration
    Good Bye 2017 D. New Year and Arbitrary Arrangement
    Codeforces Round #454 D. Seating of Students
    浙大紫金港两日游
  • 原文地址:https://www.cnblogs.com/gengaixue/p/3300658.html
Copyright © 2011-2022 走看看