Java-ZipUtil工具类

来源:互联网 发布:燕郊招聘淘宝客服 编辑:程序博客网 时间:2024/05/19 00:47
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);            //compressed=compressedStr.getBytes();            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;    }}
原创粉丝点击