关于java自带的ZipInputStream解析zip里面包含中文的问题

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

今天,要做支付宝对账,是从支付宝提供的sftp地址上面,读取支付宝生成的zip对账文件进行读取里面的文件,但是后来发现用zipInputStream读取的时候,一直报错java.lang.IllegalArgumentException这个异常。后来经过debug发现,ZipEntry竟然为空。最终网上搜了下资料,说是用ant.jar来解决,特此在这里记录下解决问题的过程:

方法一:使用ant.jar

  1. 首先加入ant的pom


  org.apache.ant
  ant
  1.9.6

然后写个测试类:

@org.junit.Test
public void test2() throws IOException {
    ZipFile zip = new ZipFile(new File("D:/2088011445567254-20160114.zip"),"GBK");
    Enumeration enumeration =  zip.getEntries();
    while (enumeration.hasMoreElements()) {
        org.apache.tools.zip.ZipEntry zipEntry = enumeration.nextElement();
        System.out.println(zipEntry.getName());
    }
}

控制台正常的解析出结果:

关于java自带的ZipInputStream解析zip里面包含中文的问题_第1张图片

方法二:使用commons-compress.jar

加入pom依赖


  org.apache.commons
  commons-compress
  1.10

方法:

@org.junit.Test
public void test2() throws IOException {
    ZipArchiveInputStream zipArchiveInputStream = new ZipArchiveInputStream(new FileInputStream(new File("D:/2088011445567254-20160114.zip")),"gbk");
    ZipArchiveEntry zipArchiveEntry = null;
    while ((zipArchiveEntry = zipArchiveInputStream.getNextZipEntry()) != null) {
        System.out.println(zipArchiveEntry.getName());
    }

结果:关于java自带的ZipInputStream解析zip里面包含中文的问题_第2张图片

转载于:https://my.oschina.net/kkrgwbj/blog/649475

你可能感兴趣的:(关于java自带的ZipInputStream解析zip里面包含中文的问题)