龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

非java.util.zip,使用ant.jar制作zip压缩文件,以及相关中文解决方法

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
用Java.util.zip制作zip压缩文件时,假如制作的压缩文件有中文文件名或中文目录,用WinZip、WinRAR解压时会有乱码, 同样,用java.util.zip解压WinZip、WinRar打包的压缩文件时,中文也是乱码,

  用Java.util.zip制作zip压缩文件时,假如制作的压缩文件有中文文件名或中文目录,用WinZip、WinRAR解压时会有乱码, 同样,用java.util.zip解压WinZip、WinRar打包的压缩文件时,中文也是乱码,主要原因是因为java.util.zip使用编码和WinZip和WinRar使用的不同,在网上找了半天,发现只有两种解决方法:
  1、修改import java.util.zip.ZipInputStream和ZipOutputStream。
  2、使用Apache Ant里提供的zip工具。
  -------------------------------------
  已找到解决方法,就是用Ant的zip来实现,Ant里面可以指定编码,而java.util.zip是写死了的,只能用UTF-8,呵呵
  -------------------------------
  不要使用java.util.zip的包,用ant.jar放到classpath中

  //在classpath中引入ant.jar的包
  import java.io.*; 
  import java.util.*;
  import java.io.File;
  import org.apache.tools.zip.*;

  public  class  CDGGzip 
  { 
    //boolean  packFrame  =  false; 
    private File srcPath =new File("d:"+File.separator+"邢晓宁");
    private String outFilename=new String("d:"+File.separator+"邢晓宁.zip");
  private int len=srcPath.listFiles().length;
  private String[] filenames = new String[len];
  public void setSrcPath(String src){
     srcPath=new File(src);
    }
    public File getSrcPath(){
    return srcPath;
    }
  public void setOutFilename(String out){
     outFilename=out;
    }
    public String getOutFilename(){
    return outFilename;
    } 

    public void gzip(){
  byte[] buf = new byte[1024];
    try {
    File[]  files  =  srcPath.listFiles();
    for(int  i=0;i<len;i++)
    {
    //if(!files[i].isDirectory())
  filenames[i]=srcPath.getPath()+File.separator+files[i].getName();
  }
    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));
    for (int i=0; i<filenames.length; i++)
    {
    FileInputStream in = new FileInputStream(filenames[i]);
    out.putNextEntry(new org.apache.tools.zip.ZipEntry(files[i].getName()));
    int len;
    while ((len = in.read(buf)) > 0)
    {
    out.write(buf, 0, len);
    }

    out.closeEntry();
    in.close();
        }

        out.close();
      }
      catch (IOException e)
      {
      System.out.println(e);
      }
    }
   
  

精彩图集

赞助商链接