2012-06-22 3 views
0
java.util.zip.ZipInputStream zis = new java.util.zip.ZipInputStream(new BufferedInputStream(is)); 

    java.util.zip.ZipEntry entry; 
    new File(outdir+ File.separator+"changelog").delete(); 
    new File(outdir+ File.separator+"media").delete(); 
    try { 
     while ((entry = zis.getNextEntry()) != null) { 

      File of = new File(outdir + File.separator + entry.getName()); 

      if (entry.isDirectory()) { 
       of.mkdirs(); 
       continue; 
      } else { 
       File xx = new File(of.getParent()); 
       if (!xx.exists()) { 
        Stack<String> todo = new Stack<String>(); 
        do { 
         todo.push(xx.getAbsolutePath()); 
         xx = new File(xx.getParent()); 
        } while (!xx.exists()); 
        while (todo.size() > 0) { 
         xx = new File(todo.pop()); 
         if (!xx.exists()) { 
          xx.mkdirs(); 
         } 
        } 
       } 
      } 

      BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(of), buffer.length); 

      cpio(new BufferedInputStream(zis), bos, "unzip:" + entry.getName()); 

      bos.flush(); 
      bos.close(); 
     } 
    } catch (IllegalArgumentException e) { 
     // problem with chars in entry name likely 
    }catch(Exception e){ 
     System.out.println(e+"Srikanth"); 
    } 
    zis.close(); 

} 

entry.isDirectory() всегда returing ложь, так это создание файлов вместо каталогов. В чем проблема?Невозможно извлечь папки из архива с помощью ZipEntry в окнах

ответ

0

ZipEntry из ZipInputStream, представляющего пустой каталог на конце файла с \, каталог с элементами с/

Так что entry.isDirectory() не работает с пустым каталогом.

Где, как ZipEntry из ZipFile работает нормально. Я думаю, что есть разница между ZipInputStream и ZipEntry поведение.

+0

Я не уверен в различии между ZipInputStream и ZipEntry, но я думаю, что вы на что-то обсуждаете, как представлен путь. См. Этот отчет об ошибке: (http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6233323). – AndyJ

0

isDirectory не работает вообще с файлами на молнию со стандартной опцией Windows, «отправлено/Zip файлы»

Формат почтового индекса отличается от формата сгенерирован с помощью инструментов, таких как 7zip или Winzip. (Приятно иметь стандартное сжатие архива: D)

Смежные вопросы