java解压内部文件为csv格式的zip格式的压缩包

如题,自己写了个解压工具类,可以解压内部文件格式为txt格式的zip文件,但是当解压内部文件格式为csv格式的时候出现以下异常

 java.lang.IllegalArgumentException: MALFORMED
    at java.util.zip.ZipCoder.toString(ZipCoder.java:58)
    at java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:297)
    at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:121)
    at com.jiewen.batch.test.UnZip.main(UnZip.java:14)

我的代码如下:

 public class UnZip {

    public static void main(String[] args) {
    ZipInputStream zin; 
    try {
    zin = new ZipInputStream(new FileInputStream("F://20881015683516310156_20160605.csv.zip"));
    // 实例化对象,指明要进行解压的文件
    ZipEntry entry; // 获取下一个ZipEntry
    while (((entry = zin.getNextEntry()) != null)&& !entry.isDirectory()) {
    // 如果entry不为空,并不在同一目录下
    File file = new File("F:\\" + entry.getName()); // 获取文件目录
    if (!file.exists()) { // 如果该文件不存在
    file.mkdirs();// 创建文件所在文件夹
    file.createNewFile(); // 创建文件
    }
    zin.closeEntry(); // 关闭当前entry
    System.out.println(entry.getName() + "解压成功");
    }
    zin.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
}

各位大神帮我看看。

检查下压缩文件本身是否正确,解压缩过程中有没有杀毒软件等干扰,csv文件文件名是否超长或者有特殊符号、中文

应该是因为你zip包中的文件有中文文件名,ZipInputStream只能解析utf8编码的名称,你文件中的中文名估计是gbk编码的。
解决办法:1.服务器也用utf8编码,大家统一编码。
2.文件名都用英文,不要用中文