<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java快速開發(fā)平臺(tái)

    www.fastunit.com

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      23 Posts :: 0 Stories :: 273 Comments :: 0 Trackbacks
    數(shù)據(jù)傳輸時(shí),有時(shí)需要將數(shù)據(jù)壓縮和解壓縮,本例使用GZIPOutputStream/GZIPInputStream實(shí)現(xiàn)。

    1、使用ISO-8859-1作為中介編碼,可以保證準(zhǔn)確還原數(shù)據(jù)
    2、字符編碼確定時(shí),可以在uncompress方法最后一句中顯式指定編碼
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.util.zip.GZIPInputStream;
    import java.util.zip.GZIPOutputStream;

    // 將一個(gè)字符串按照zip方式壓縮和解壓縮
    public class ZipUtil {

      
    // 壓縮
      public static String compress(String str) throws IOException {
        
    if (str == null || str.length() == 0) {
          
    return str;
        }
        ByteArrayOutputStream out 
    = new ByteArrayOutputStream();
        GZIPOutputStream gzip 
    = new GZIPOutputStream(out);
        gzip.write(str.getBytes());
        gzip.close();
        
    return out.toString("ISO-8859-1");
      }

      
    // 解壓縮
      public static String uncompress(String str) throws IOException {
        
    if (str == null || str.length() == 0) {
          
    return str;
        }
        ByteArrayOutputStream out 
    = new ByteArrayOutputStream();
        ByteArrayInputStream in 
    = new ByteArrayInputStream(str
            .getBytes(
    "ISO-8859-1"));
        GZIPInputStream gunzip 
    = new GZIPInputStream(in);
        
    byte[] buffer = new byte[256];
        
    int n;
        
    while ((n = gunzip.read(buffer)) >= 0) {
          out.write(buffer, 
    0, n);
        }
        
    // toString()使用平臺(tái)默認(rèn)編碼,也可以顯式的指定如toString("GBK")
        return out.toString();
      }

      
    // 測試方法
      public static void main(String[] args) throws IOException {
        System.out.println(ZipUtil.uncompress(ZipUtil.compress(
    "中國China")));
      }

    }
    posted on 2008-04-25 12:37 FastUnit 閱讀(23055) 評(píng)論(8)  編輯  收藏 所屬分類: Java

    Feedback

    # re: 字符串的壓縮和解壓縮[未登錄] 2008-04-25 22:01 Matthew Chen
    toString()不是采用平臺(tái)默認(rèn)編碼,而是就是unicode,而且("中國China")也是unicode,java內(nèi)部字符串編碼只是這種類型,對(duì)外實(shí)現(xiàn)讀取和寫入文本才是使用平臺(tái)默認(rèn)編碼的。  回復(fù)  更多評(píng)論
      

    # re: 字符串的壓縮和解壓縮 2008-04-25 23:51 FastUnit
    @Matthew Chen
    看一下ByteArrayOutputStream.toString()的源碼,最終使用的編碼是Converters.getDefaultEncodingName(),不同環(huán)境下編碼可能不同,我的是GBK。  回復(fù)  更多評(píng)論
      

    # re: 字符串的壓縮和解壓縮 2008-04-29 16:22 曉秋
    我的輸出結(jié)果是這樣的.
    ??China
    我的編輯器的系統(tǒng)編碼是:utf-8

    若指定編碼時(shí)報(bào)錯(cuò).GZIP is not fomat.  回復(fù)  更多評(píng)論
      

    # re: 字符串的壓縮和解壓縮 2008-05-06 14:07 FastUnit
    @曉秋
    不要修改過渡編碼“ISO-8859-1”;
    傳入字符的編碼是什么,解壓的時(shí)候就指定這個(gè)編碼,在uncompress方法的最后一句中指定,如“return out.toString("UTF-8");”  回復(fù)  更多評(píng)論
      

    # re: 字符串的壓縮和解壓縮[未登錄] 2009-09-04 13:58 菜鳥
    我想問問,為什么壓縮后的字符串怎么更長了?
    System.out.println("中國China".length());
    System.out.println(ZipUtil.compress("中國China").length());
    未壓縮前衛(wèi)7,壓縮后為29,怎么回事?  回復(fù)  更多評(píng)論
      

    # re: 字符串的壓縮和解壓縮[未登錄] 2009-10-20 18:06 菜菜鳥
    @菜鳥
    字符串超過一定長度時(shí),壓縮才有效!  回復(fù)  更多評(píng)論
      

    # re: 字符串的壓縮和解壓縮[未登錄] 2012-04-20 14:17 yy
    gzip.write(str.getBytes());

    return out.toString();

    此兩處建議默認(rèn)加上相應(yīng)的字符集編碼,以在不同平臺(tái)的不同默認(rèn)字符集下的壓縮和解壓縮結(jié)果完全相同和正確。  回復(fù)  更多評(píng)論
      

    # re: 字符串的壓縮和解壓縮 2016-01-30 19:49 www我
    lz,InputStream為什么輸出卻是GZIPInputStream型,這也導(dǎo)致數(shù)據(jù)流錯(cuò)誤,有辦法解決嗎?  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 亚洲综合激情五月色一区| 黄色一级视频免费观看| 免费成人av电影| 国产精品无码一二区免费| 日韩精品亚洲aⅴ在线影院| 丁香五月亚洲综合深深爱| 中文字幕精品亚洲无线码一区应用| 在线观看av永久免费| 四虎影在线永久免费观看| av成人免费电影| 67194熟妇在线永久免费观看 | 免费大香伊蕉在人线国产| 精品在线免费观看| 香蕉97碰碰视频免费| 丁香花免费高清视频完整版| 国产亚洲av片在线观看播放 | a毛片免费播放全部完整| 久久国产乱子精品免费女| 91av免费观看| 亚洲国产精品一区二区第一页| 亚洲精品午夜在线观看| 国产在线观看免费完整版中文版| 亚洲?v女人的天堂在线观看| 好看的亚洲黄色经典| 国产免费人成视频尤勿视频| 亚洲午夜福利717| jizz在线免费观看| 亚洲AV电影院在线观看| 亚洲AV成人影视在线观看| 免费国产黄网站在线看| 四虎国产精品免费久久| 天天操夜夜操免费视频| 亚洲欧美日韩自偷自拍| 亚洲成A人片在线观看无码3D| 国产亚洲精品美女| 亚洲色自偷自拍另类小说| www在线观看免费视频| 男人的天堂亚洲一区二区三区| 伊人久久大香线蕉亚洲五月天| 亚洲小说图区综合在线| 夫妻免费无码V看片|