扑球小猫 2014-06-09 02:42 采纳率: 0%
浏览 13946

ZipInputStreamd的解压问题,getNextEntry()

public static void unzipFile(File zip,String directory) throws Exception
{
try{

         java.util.zip.ZipInputStream zis = new java.util.zip.ZipInputStream(new FileInputStream(zip));
         java.util.zip.ZipEntry ze = (java.util.zip.ZipEntry) zis.getNextEntry();
         File parent = new File(directory);
         if (!parent.exists() && !parent.mkdirs()){
             throw new Exception("创建解压目录 \"" + parent.getAbsolutePath() + "\" 失败");
         }
         while (ze != null){
             String name = ze.getName();
             File child = new File(parent, name);
             FileOutputStream output = new  FileOutputStream(child);
             byte[] buffer = new byte[10240];
             int bytesRead = 0;
             while ((bytesRead = zis.read(buffer)) > 0){
                 output.write(buffer, 0, bytesRead);
             }
             output.flush();
             output.close();
             ze = (java.util.zip.ZipEntry) zis.getNextEntry();
         }
         zis.close();
     }catch (IOException e){
        e.printStackTrace();
     }
 }

为什么zis.getNextEntry()这二个地方获取对象就报错。
java.lang.IllegalArgumentException
at java.util.zip.ZipInputStream.getUTF8String(ZipInputStream.java:301)
at java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:247)
at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:74)
at com.minxinloan.black.web.utils.Test.unzipFile(Test.java:110)
at com.minxinloan.black.web.utils.Test.main(Test.java:85

如果压缩文件下面有文件夹就报这个错误,没有文件夹直接是文件就不报错误。这是为什么。有点着急。

  • 写回答

2条回答

  • qq_20704799 2015-03-20 02:31
    关注

    我也遇到这个问题,用zip4j能解决这个问题!

    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制