由于客户端与服务端之间采用web service的方式进行传输。
然后如果传送大型的字符串的时候就会出现缓慢的问题。
比如我们测试了。在2w条数据。大概60多m的字符串传输的时候要花费7--8秒时间。
所以就考虑到使用压缩和转码的方式进行传输。
对方接受到数据先反转码,然后再进行解压。
一下是自己使用java进行完成的功能。
package com.duduli.li.zip;
import java.io.ByteArrayOutputStream;
import java.util.zip.DeflaterOutputStream;
import java.util.zip.InflaterOutputStream;
import org.apache.commons.codec.binary.Base64;
public class ZipWithZlib {
// 压缩字符串
public static String compressData(String data) {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DeflaterOutputStream zos = new DeflaterOutputStream(bos);
zos.write(data.getBytes());
zos.close();
return new String(getenBASE64inCodec(bos.toByteArray()));
} catch (Exception ex) {
ex.printStackTrace();
return "ZIP_ERR";
}
}
// 使用apche codec对数组进行encode
public static String getenBASE64inCodec(byte [] b) {
if (b == null)
return null;
return new String((new Base64()).encode(b));
}
// base64转码为string
public static byte[] getdeBASE64inCodec(String s) {
if (s == null)
return null;
return new Base64().decode(s.getBytes());
}
// 解码字符串
public String decompressData(String encdata) {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
InflaterOutputStream zos = new InflaterOutputStream(bos);
zos.write(getdeBASE64inCodec(encdata));
// byte [] b = encdata.getBytes();
// int len = b.length;
// zos.write(b, 0, len);
// zos.write(getdeBASE64(encdata.getBytes()),0,(encdata.getBytes()).length);
zos.close();
return new String(bos.toByteArray());
} catch (Exception ex) {
ex.printStackTrace();
return "UNZIP_ERR";
}
}
public static void main(String[] args) {
ZipWithZlib zwz = new ZipWithZlib();
String compString = zwz.compressData("中华人民共和国");
System.out.println(compString);
String decompString = zwz.decompressData(compString);
System.out.println(decompString);
}
}
其中base64的转码需要导入apache的codec包,不能使用sun的那个包。
原因是sun的那个包会在文件过大的时候自己加入回车换行。
分享到:
相关推荐
简单实现js对字符串进行base64转码/解码
java压缩字符串
c#中 base64字符串与普通字符串互转,转成 Base64 形式的...
java 把PDF转换成BASE64,java 把PDF转换成BASE64,java 把PDF转换BASE64,java 把PDF转换成BASE64java 把PDF转换成BASE64
java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...
java端:返回类型非字符接口调用StringUtils#base64AndCompressJson进行编码压缩 ,返回类型为字符接口调用StringUtils#base64Andcompress js 端:引入压缩包中的js文件 ,调用deBase64AndUncompress进行解压解码
Java 字符串压缩和文件压缩代码,详细说明参考博客地址: https://blog.csdn.net/zhangmingziliao/article/details/77414760
base64将文件(图片或其它)转码成字符串,将字符串还原成文件
支持maven引入依赖生成二维码,自带工具类,支持生成二维码到本地,也可以转成base64字符串(前端轻松解析),写好了强大的工具类,总有一个适合你的。。。。。
运行程序之后输入任意的字符串,将字符串转化成二进制数字字符串,然后利用LZ78算法实现对二进制字符串压缩解压,最后再恢复原来的字符串
Base64转String字符串,支持将Base64转化为String字符串
java生成二维码_java将二维码转换成base64
java字符串处理取出括号内的字符串 都是我自己试过可以用的j
c#字符串转为base64的程序,或base64转为字符的工具,比较简单.
java 字符串 详细实例代码 字符串检索 可改变字符串 字符串生成器 日期和时间字符串格式化
提供一种Base64编码,并输出UTF-8格式的BASE64编码方式。本程序在微信小程序开发工具中已经测试通过。 Base64代码: [javascript] view plain copy print? (function(){ var BASE64_MAPPING = [ 'A','B','C','D',...
java字符串编码转换和web中的字符串转换
JAVA的字符串拼接与性能 概述:本文主要研究的是JAVA的字符串拼接的性能,原文中的测试代码在功能上并不等价,导致concat的测试意义不大。不过原作者在评论栏给了新的concat结果,如果有兴趣的同学建议自己修改代码...
89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符串方法.zip89.java字符...
主要为大家详细介绍了java实现图片转base64字符串,java实现base64字符串转图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下