数据压缩工具类

package com.util;

/**

  • @author yxm
    */
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    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;
}
/**
 * 替换字符串换行、空格等
 * @param:             @param str
 * @param:             @return   
 * @return:         String   
 * @throws
 */
public static String replaceSpecialStr(String str) {
    String repl = "";
    if (str!=null) {
        Pattern p = Pattern.compile("\\s*|\t|\r|\n");
        Matcher m = p.matcher(str);
        repl = m.replaceAll("");
    }
    return repl;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值