如何解决java程序解压含有中文名的zip压缩包出现乱码

上次利用java自动的java.util.zip.ZipEntry和 java.util.zip.ZipFile来解压zip文件,今天发现程序在读取解压文件时居然报了空指针异常,debug程序后发现时读取不到文件,产生原先是zip压缩文件中含有中文的名称,读取文件名为乱码,

报找不到文件名,所以报了空指针,想到ant构建文件也有这个功能,换了apache的ant.jar居然解决了中文的问题。

备份下。

 

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Enumeration;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;


/**
 * 读取zip压缩文件中文本的内容
 * @author fish
 */
public class ReadZip {
  public static void main(String args[]) {
    try {
      String fileName = "D:/workspace/java/src/ReadZip.zip";
      //构造ZipFile
      ZipFile zf = new ZipFile(new File(fileName));
      //返回 ZIP file entries的枚举.
      Enumeration<? extends ZipEntry> entries = zf.getEntries();

      while (entries.hasMoreElements()) {
        ZipEntry ze = entries.nextElement();
        System.out.println("name:"+ze.getName());
          long size = ze.getSize();
          if (size > 0) {
            System.out.println("Length is " + size);
            BufferedReader br = new BufferedReader(
                new InputStreamReader(zf.getInputStream(ze)));
            String line;
            while ((line = br.readLine()) != null) {
              System.out.println(line.trim());
            }
            br.close();
        }
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}
 

你可能感兴趣的:(java,apache,ant)