博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java压缩字符串工具类
阅读量:6203 次
发布时间:2019-06-21

本文共 3321 字,大约阅读时间需要 11 分钟。

 

StringCompressUtils.java

package javax.utils;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;import org.apache.commons.codec.binary.Base64;/** * Java 字符串压缩工具 *  * @author Logan * @version 1.0.0 * */public class StringCompressUtils {    /**     * 使用gzip进行压缩     *      * @param str 压缩前的文本     * @return 返回压缩后的文本     * @throws IOException 有异常时抛出,由调用者捕获处理     */    public static String gzip(String str) throws IOException {        if (str == null || str.isEmpty()) {            return str;        }        ByteArrayOutputStream out = new ByteArrayOutputStream();        try (                GZIPOutputStream gzip = new GZIPOutputStream(out);        ) {            gzip.write(str.getBytes());        }        return Base64.encodeBase64String(out.toByteArray());    }    /**     * 使用gzip进行解压缩     *      * @param compressedStr 压缩字符串     * @return 解压字符串     * @throws IOException 有异常时抛出,由调用者捕获处理     */    public static String gunzip(String compressedStr) throws IOException {        if (compressedStr == null || compressedStr.isEmpty()) {            return compressedStr;        }        byte[] compressed = Base64.decodeBase64(compressedStr);        ByteArrayOutputStream out = new ByteArrayOutputStream();        ByteArrayInputStream in = new ByteArrayInputStream(compressed);        try (                GZIPInputStream ginzip = new GZIPInputStream(in);        ) {            byte[] buffer = new byte[4096];            int len = -1;            while ((len = ginzip.read(buffer)) != -1) {                out.write(buffer, 0, len);            }        }        return out.toString();    }    /**     * 使用zip进行压缩     *      * @param str 压缩前的文本     * @return 返回压缩后的文本     * @throws IOException 有异常时抛出,由调用者捕获处理     */    public static String zip(String str) throws IOException {        if (null == str || str.isEmpty()) {            return str;        }        ByteArrayOutputStream out = new ByteArrayOutputStream();        try (                ZipOutputStream zout = new ZipOutputStream(out);        ) {            zout.putNextEntry(new ZipEntry("0"));            zout.write(str.getBytes());            zout.closeEntry();        }        return Base64.encodeBase64String(out.toByteArray());    }    /**     * 使用zip进行解压缩     *      * @param compressed 压缩后的文本     * @return 解压后的字符串     * @throws IOException 有异常时抛出,由调用者捕获处理     */    public static final String unzip(String compressedStr) throws IOException {        if (null == compressedStr || compressedStr.isEmpty()) {            return compressedStr;        }        byte[] compressed = Base64.decodeBase64(compressedStr);        ByteArrayOutputStream out = new ByteArrayOutputStream();        ByteArrayInputStream in = new ByteArrayInputStream(compressed);        try (                ZipInputStream zin = new ZipInputStream(in);        ) {            zin.getNextEntry();            byte[] buffer = new byte[4096];            int len = -1;            while ((len = zin.read(buffer)) != -1) {                out.write(buffer, 0, len);            }        }        return out.toString();    }}

 

转载于:https://www.cnblogs.com/jonban/p/5023028.html

你可能感兴趣的文章
XML文件外部写法--引入DTD规范
查看>>
创作型---原型模式(C# ICloneable接口的实现)
查看>>
GMM
查看>>
相似度计算常用方法综述
查看>>
光纤接口类型及光纤收发器指示灯图解
查看>>
static
查看>>
[NOIP2010]乌龟棋(DP)
查看>>
springmvc json乱码问题
查看>>
企业分布式微服务云SpringCloud SpringBoot mybatis (六)分布式配置中心(Spring Cloud Config)...
查看>>
逻辑回归
查看>>
linux下redis安装
查看>>
virtualbox安装centos 6.4 server 网络连接问题
查看>>
C#多线程编程
查看>>
一个人在咖啡里默默的打总结。
查看>>
IDEA常用插件及下载地址
查看>>
数字三角形
查看>>
PasswordHelper 对user对象的password进行加密重设
查看>>
struct tm的定义
查看>>
Redis 数据类型
查看>>
持续集成(CONTINUOUS INTEGRATION)
查看>>