Java中压缩与解压

Java中压缩与解压

ID:40558869

大小:52.00 KB

页数:3页

时间:2019-08-04

Java中压缩与解压_第1页
Java中压缩与解压_第2页
Java中压缩与解压_第3页
资源描述:

《Java中压缩与解压》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Java中压缩与解压--中文文件名乱码解决办法收藏本文参阅了台湾JSP学习网部分内容,略有增删.java对於文字的编码是以unicode为基础,因此,若是以ZipInputStream及ZipOutputStream来处理压缩及解压缩的工作,碰到中文档名或路径,那当然是以unicode来处理罗!但是,现在市面上的压缩及解压缩软体,例如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产生CZipOutputStream.class及CZipInputStream.class,使用winzip开启[java_home]jrelibrt.jar这个档案,将CnZipOutputStream.class及CnZipInputStream.class加进去,以後当压缩及解压缩时有中文档名及路径的问

8、题时,就可以指定编码方式来处理了。使用方法:CnZipOutputStreamzos=newCnZipOutputStream(OutputStreamos,Stringencoding);CnZipInputStreamzins=newCnZipInputStream(InputStreamins,S

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

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

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