Java中壓縮與解壓

Java中壓縮與解壓

ID:40558869

大小:52.00 KB

頁數(shù):3頁

時間:2019-08-04

Java中壓縮與解壓_第1頁
Java中壓縮與解壓_第2頁
Java中壓縮與解壓_第3頁
資源描述:

《Java中壓縮與解壓》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫

1、Java中壓縮與解壓--中文文件名亂碼解決辦法收藏本文參閱了臺灣JSP學習網(wǎng)部分內(nèi)容,略有增刪.java對於文字的編碼是以unicode為基礎,因此,若是以ZipInputStream及ZipOutputStream來處理壓縮及解壓縮的工作,碰到中文檔名或路徑,那當然是以unicode來處理羅!但是,現(xiàn)在市面上的壓縮及解壓縮軟體,例如winzip,卻是不支援unicode的,一碰到檔名以unicode編碼的檔案,它就不處理。那要如何才能做出讓WinRar能夠處理的壓縮檔呢?那就得從修改ZipInputStream及ZipO

2、utputStream對於檔名的編碼方式來著手了。我們可以從jdk的src.zip取得ZipInputStream及ZipOutputStream的原始碼來加以修改一、ZipOutputStream.java1.從jdk的src.zip取得ZipOutputStream.java原始碼,另存到一個新文件中,檔名改為CnZipOutputStream.java。2.開始修改原始碼,將class名稱改為CnZipOutputStream3.建構式也必須更改為CnZipOutputStream4.新增member,這個membe

3、r記錄編碼方式?privateStringencoding="UTF-8";5.再新增一個建構式(這個建構式可以讓這個class在new的時候,設定檔名的編碼)?publicCZipOutputStream(OutputStreamout,Stringencoding){????this(out);????this.encoding=encoding;?}6.找到byte[]nameBytes=getUTF8Bytes(e.name);(有二個地方),將它修改如下:1.byte[]nameBytes=null;2.?try

4、3.?{4.?if(this.encoding.toUpperCase().equals("UTF-8"))5.?nameBytes=getUTF8Bytes(e.name);1.?else2.?nameBytes=e.name.getBytes(this.encoding);3.?}4.?catch(ExceptionbyteE)5.?{6.?nameBytes=getUTF8Bytes(e.name);7.?}二、ZipInputStream.java1.從jdk的src.zip取得ZipInputStream.jav

5、a原始碼,另存到一個新文件中,檔名改為CnZipInputStream.java。2.開始修改原始碼,將class名稱改為CnZipInputStream3.建構式也必須更改為CnZipInputStream4.新增member,這個member記錄編碼方式?privateStringencoding="UTF-8";5.再新增一個建構式如下(這個建構式可以讓這個class在new的時候,設定檔名的編碼)publicCZipInputStream(InputStreamin,Stringencoding){?this(in

6、);?this.encoding=encoding;}6.找到ZipEntrye=createZipEntry(getUTF8String(b,0,len));這一行,將它改成如下:1.ZipEntrye=null;2.?try3.?{4.?if(this.encoding.toUpperCase().equals("UTF-8"))5.?e=createZipEntry(getUTF8String(b,0,len));6.?else1.?e=createZipEntry(newString(b,0,len,this.en

7、coding));2.?}3.?catch(ExceptionbyteE)4.?{5.?e=createZipEntry(getUTF8String(b,0,len));6.?}以上兩個檔案儲存後compile產(chǎn)生CZipOutputStream.class及CZipInputStream.class,使用winzip開啟[java_home]jrelibrt.jar這個檔案,將CnZipOutputStream.class及CnZipInputStream.class加進去,以後當壓縮及解壓縮時有中文檔名及路徑的問

8、題時,就可以指定編碼方式來處理了。使用方法:CnZipOutputStreamzos=newCnZipOutputStream(OutputStreamos,Stringencoding);CnZipInputStreamzins=newCnZipInputStream(InputStreamins,S

當前文檔最多預覽五頁,下載文檔查看全文

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

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