java教程:字符串的压缩与解压

java教程:字符串的压缩与解压

ID:17689432

大小:112.00 KB

页数:10页

时间:2018-09-04

java教程:字符串的压缩与解压_第1页
java教程:字符串的压缩与解压_第2页
java教程:字符串的压缩与解压_第3页
java教程:字符串的压缩与解压_第4页
java教程:字符串的压缩与解压_第5页
资源描述:

《java教程:字符串的压缩与解压》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Java教程:字符串的压缩与解压时间:2012-05-1409:36点击:107次【大中小】本节摘要:本节主要简单介绍对字符串的压缩与解压。1.引言最近在做项目中,平台提供一个http服务给其他系统调用,然后我接收到其他系统的json格式的报文后去解析,然后用拿到的数据去调用corba服务,我再把corba的返回值封装完成json字符串返回给外部系统。遇到一个接口去调用corba服务,然后corba返回的数据经过封装后字符串的长度达到7M左右,导致http客户端无法正常的接收完所有的数据。你可能会说这个接

2、口设计的不合理,为什么不增加查询条件把查询条件范围缩小一点?但是,这个不是本节要讨论的内容,主要是因为corba服务已经发布用了很久且不在此次项目改造范围之内,再者这个corba服务已经上线用了N久,轻易的改变可能会导致未知的错误。签于此,我想到可以把json格式的字符串给压缩,然后客户端再解压。(一是字符串的压缩比例比较的高,二是字符串的压缩和解压实现起来也比较简单)。虽然,最后没有用到字符串的压缩和解压的方式,而是修改客户端(1.http客户端进一步精确查询条件2.读取返回数据流采用循环读取的方式)来

3、解决此问题,我还是把字符串的压缩和解压做一下简单的记录。2.关于压缩与解压压缩算法有多种,我说知道和接触有javaI/O自带的zip和gzip两种方式。本节主要来简单介绍一下在系统交互之间遇到大容量的字符串数据交互时,采用一端压缩,另一端再解压的方式来发送和接收数据。关于此次的压缩和解压用到的主要就是GZIPOutputStream和GZIPInputStream类,此类的相关介绍在JDK中有详细的介绍,这里就不再累述了。 3.代码如下: 压缩:压缩    /**     *字符串的压缩     *   

4、  *@paramstr     *           待压缩的字符串     *@return   返回压缩后的字符串     *@throwsIOException     */    publicstaticStringcompress(Stringstr)throwsIOException{        if(null==str

5、

6、str.length()<=0){            returnstr;        }        //创建一个新的byte数组输出流        B

7、yteArrayOutputStreamout=newByteArrayOutputStream();        //使用默认缓冲区大小创建新的输出流        GZIPOutputStreamgzip=newGZIPOutputStream(out);        //将b.length个字节写入此输出流        gzip.write(str.getBytes());        gzip.close();        //使用指定的charsetName,通过解码字节将缓冲区内容转

8、换为字符串        returnout.toString("ISO-8859-1");    }解压:> /**     *字符串的解压     *     *@paramstr     *           对字符串解压     *@return   返回解压缩后的字符串     *@throwsIOException     */    publicstaticStringunCompress(Stringstr)throwsIOException{        if(null==str

9、

10、

11、str.length()<=0){            returnstr;        }        //创建一个新的byte数组输出流        ByteArrayOutputStreamout=newByteArrayOutputStream();        //创建一个ByteArrayInputStream,使用buf作为其缓冲区数组        ByteArrayInputStreamin=newByteArrayInputStream(str                

12、.getBytes("ISO-8859-1"));        //使用默认缓冲区大小创建新的输入流        GZIPInputStreamgzip=newGZIPInputStream(in);        byte[]buffer=newbyte[256];        intn=0;        while((n=gzip.read(buffer))>=0){//将未压缩数据读入字节数组          

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。