JAVA处理字符串压缩以及文件压缩

字符串压缩:

之前在做Android客户端开发的时候,需要请求一个字典类型的http请求接口,由于接口json数据过大,达到6M,当时建议后端对接口返回的json数据逻辑进行处理,在服务端将json串压缩,然后在客户端进行解压,最后在将数据显示在客户端。

Java实现字符串压缩API:

压缩算法有多种,我说知道和接触有java I/O自带的zip和gzip两种方式,此次的压缩和解压用到的主要就是GZIPOutputStream和GZIPInputStream类,看一下例子:

字符串压缩代码:

public static String compress(String source) {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();

        try {
            GZIPOutputStream gos = new GZIPOutputStream(bos);
            gos.write(source.getBytes("ISO-8859-1"));
            gos.close();
            return bos.toString("ISO-8859-1");
        } catch (IOException var3) {
            System.out.println(var3.getStackTrace().toString());
            return source;
        }
}

字符串解压代码:

/****
	 * @Method compress  字符串解压方法
	 * @author source 需要传入待解压的字符串
	 * 返回值   返回解压后的字符串
	 ****/
    public static String uncompress(String source) {
        if (source != null && source.length() != 0) {
            try {
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                ByteArrayInputStream bis = new ByteArrayInputStream(source.getBytes("ISO-8859-1"));
                GZIPInputStream gis = new GZIPInputStream(bis);
                byte[] data = new byte[1024];

                for(int len = gis.read(data); len != -1; len = gis.read(data)) {
                    bos.write(data, 0, len);
                }

                return bos.toString();
            } catch (IOException var6) {
            	System.out.println(var6.getStackTrace().toString());
                return source;
            }
        } else {
            return source;
        }
    }

测试代码:

public static void main(String[] args) {
		// 字符串超过一定的长度  
        String str = "ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggfdgfdgf"
        		+ "ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg"
        		+ "gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggABCdef123中文~!@#$%^&*()_+{fd}"
        		+ ";/1111111111111111111111111AAAAAAAAAAAJDLFJDLFJDLFJLDFFFFJEIIIIIIIIIIFJJJJJJJJJJJJALLLLLLLLLLLLLLLLLLLLLLdddddddddddddddddfdfdfdfdfdfdd"
        		+ "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddessdfrdfdfd"
        		+ "ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值