org.apache.tools.zip包解决java.util.zip包中文问题

本文介绍如何使用Apache工具包中的org.apache.tools.zip.*类解决Java压缩过程中遇到的中文路径问题,并提供了一个具体的代码示例。

使用java自带的类 java.util.zip进行文件/目录的压缩的话,有一点不足,不支持中文的文件/目录命名,如果有中文名,那么打包就会失败。在Ant.jar类库中也有zip类,引入 org.apache.tools.zip.*,能够解决不支持中文文件目录的问题,同时,Ant的获得途径也比较多,一般的应用服务器中有这个包,如果没有去下载个tomcat5.X,里面也有ant.jar,可以使用。

例子如下:

java 代码
  1. importjava.io.File;
  2. importorg.apache.tools.zip.ZipOutputStream;
  3. importjava.io.FileInputStream;
  4. importjava.io.FileOutputStream;
  5. publicclassCompressBook{
  6. publicCompressBook(){
  7. }
  8. publicvoidzip(StringinputFileName)throwsException{
  9. StringzipFileName="c://test.zip";//打包后文件名字
  10. System.out.println(zipFileName);
  11. zip(zipFileName,newFile(inputFileName));
  12. }
  13. privatevoidzip(StringzipFileName,FileinputFile)
  14. throwsException{
  15. ZipOutputStreamout=newZipOutputStream(
  16. newFileOutputStream(zipFileName));
  17. zip(out,inputFile,"");
  18. System.out.println("zipdone");
  19. out.close();
  20. }
  21. privatevoidzip(ZipOutputStreamout,Filef,Stringbase)
  22. throwsException{
  23. if(f.isDirectory()){
  24. File[]fl=f.listFiles();
  25. out.putNextEntry(neworg.apache.tools.zip.ZipEntry(base+"/"));
  26. base=base.length()==0?"":base+"/";
  27. for(inti=0;i<fl.length;i++){
  28. zip(out,fl[i],base+fl[i].getName());
  29. }
  30. }
  31. else{
  32. out.putNextEntry(neworg.apache.tools.zip.ZipEntry(base));
  33. FileInputStreamin=newFileInputStream(f);
  34. intb;
  35. System.out.println(base);
  36. while((b=in.read())!=-1){
  37. out.write(b);
  38. }
  39. in.close();
  40. }
  41. }
  42. }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值