java教程:字符串的壓縮與解壓

java教程:字符串的壓縮與解壓

ID:17689432

大小:112.00 KB

頁(yè)數(shù):10頁(yè)

時(shí)間:2018-09-04

java教程:字符串的壓縮與解壓_第1頁(yè)
java教程:字符串的壓縮與解壓_第2頁(yè)
java教程:字符串的壓縮與解壓_第3頁(yè)
java教程:字符串的壓縮與解壓_第4頁(yè)
java教程:字符串的壓縮與解壓_第5頁(yè)
資源描述:

《java教程:字符串的壓縮與解壓》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、Java教程:字符串的壓縮與解壓時(shí)間:2012-05-1409:36點(diǎn)擊:107次【大中小】本節(jié)摘要:本節(jié)主要簡(jiǎn)單介紹對(duì)字符串的壓縮與解壓。1.引言最近在做項(xiàng)目中,平臺(tái)提供一個(gè)http服務(wù)給其他系統(tǒng)調(diào)用,然后我接收到其他系統(tǒng)的json格式的報(bào)文后去解析,然后用拿到的數(shù)據(jù)去調(diào)用corba服務(wù),我再把corba的返回值封裝完成json字符串返回給外部系統(tǒng)。遇到一個(gè)接口去調(diào)用corba服務(wù),然后corba返回的數(shù)據(jù)經(jīng)過(guò)封裝后字符串的長(zhǎng)度達(dá)到7M左右,導(dǎo)致http客戶(hù)端無(wú)法正常的接收完所有的數(shù)據(jù)。你可能會(huì)說(shuō)這個(gè)接

2、口設(shè)計(jì)的不合理,為什么不增加查詢(xún)條件把查詢(xún)條件范圍縮小一點(diǎn)?但是,這個(gè)不是本節(jié)要討論的內(nèi)容,主要是因?yàn)閏orba服務(wù)已經(jīng)發(fā)布用了很久且不在此次項(xiàng)目改造范圍之內(nèi),再者這個(gè)corba服務(wù)已經(jīng)上線用了N久,輕易的改變可能會(huì)導(dǎo)致未知的錯(cuò)誤。簽于此,我想到可以把json格式的字符串給壓縮,然后客戶(hù)端再解壓。(一是字符串的壓縮比例比較的高,二是字符串的壓縮和解壓實(shí)現(xiàn)起來(lái)也比較簡(jiǎn)單)。雖然,最后沒(méi)有用到字符串的壓縮和解壓的方式,而是修改客戶(hù)端(1.http客戶(hù)端進(jìn)一步精確查詢(xún)條件2.讀取返回?cái)?shù)據(jù)流采用循環(huán)讀取的方式)來(lái)

3、解決此問(wèn)題,我還是把字符串的壓縮和解壓做一下簡(jiǎn)單的記錄。2.關(guān)于壓縮與解壓壓縮算法有多種,我說(shuō)知道和接觸有javaI/O自帶的zip和gzip兩種方式。本節(jié)主要來(lái)簡(jiǎn)單介紹一下在系統(tǒng)交互之間遇到大容量的字符串?dāng)?shù)據(jù)交互時(shí),采用一端壓縮,另一端再解壓的方式來(lái)發(fā)送和接收數(shù)據(jù)。關(guān)于此次的壓縮和解壓用到的主要就是GZIPOutputStream和GZIPInputStream類(lèi),此類(lèi)的相關(guān)介紹在JDK中有詳細(xì)的介紹,這里就不再累述了。?3.代碼如下:?壓縮:壓縮????/**?????*字符串的壓縮?????*???

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

5、

6、str.length()<=0){????????????returnstr;????????}????????//創(chuàng)建一個(gè)新的byte數(shù)組輸出流????????B

7、yteArrayOutputStreamout=newByteArrayOutputStream();????????//使用默認(rèn)緩沖區(qū)大小創(chuàng)建新的輸出流????????GZIPOutputStreamgzip=newGZIPOutputStream(out);????????//將b.length個(gè)字節(jié)寫(xiě)入此輸出流????????gzip.write(str.getBytes());????????gzip.close();????????//使用指定的charsetName,通過(guò)解碼字節(jié)將緩沖區(qū)內(nèi)容轉(zhuǎn)

8、換為字符串????????returnout.toString("ISO-8859-1");????}解壓:>?/**?????*字符串的解壓?????*?????*@paramstr?????*???????????對(duì)字符串解壓?????*@return???返回解壓縮后的字符串?????*@throwsIOException?????*/????publicstaticStringunCompress(Stringstr)throwsIOException{????????if(null==str

9、

10、

11、str.length()<=0){????????????returnstr;????????}????????//創(chuàng)建一個(gè)新的byte數(shù)組輸出流????????ByteArrayOutputStreamout=newByteArrayOutputStream();????????//創(chuàng)建一個(gè)ByteArrayInputStream,使用buf作為其緩沖區(qū)數(shù)組????????ByteArrayInputStreamin=newByteArrayInputStream(str????????????????

12、.getBytes("ISO-8859-1"));????????//使用默認(rèn)緩沖區(qū)大小創(chuàng)建新的輸入流????????GZIPInputStreamgzip=newGZIPInputStream(in);????????byte[]buffer=newbyte[256];????????intn=0;????????while((n=gzip.read(buffer))>=0){//將未壓縮數(shù)據(jù)讀入字節(jié)數(shù)組??????????

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。