2011-01-22 132 views
0

创建此应用程序已成为一个痛苦的屁股!使用Java我想解压缩由许多不同的应用程序创建的.zip文件: 使用我的7-zip这工作得很好,使用somebodys winrar压缩文件完全混淆了它们! 这里是我的代码:Java - 解压缩文件的压缩方式不同

public static void ExtractModZip(File Zip, File Dest) { 
     try { 
      if (Zip.getName().toLowerCase().endsWith(".zip")) { 
      } 
      ZipFile zip = new ZipFile(Zip); 
      System.out.println(zip.getName() + " opened."); 
      Enumeration entries = zip.entries(); 
      String ModName = Zip.getName().substring(0, Zip.getName().length() - 4); 
      File base = new File(Dest + File.separator + ModName); 
      base.mkdirs(); 
      InputStream entryStream = null; 
      FileOutputStream fos = null; 
      while (entries.hasMoreElements()) { 
       ZipEntry entry = (ZipEntry) entries.nextElement(); 
       entryStream = zip.getInputStream(entry); 
       String entryName = entry.getName().replace('/', File.separatorChar); 
       entryName = entryName.replace('\\', File.separatorChar); 


       if (!entry.isDirectory()) { 
        File file = new File(base + File.separator + entryName); 
        File Base = new File(base + File.separator); 
        if (!Base.exists()) { 
         Base.mkdirs(); 
        } 

        fos = new FileOutputStream(file); 
        try { 
         // Allocate a buffer for reading the entry data. 
         byte[] buffer = new byte[1024]; 
         int bytesRead; 
         // Read the entry data and write it to the output file. 
         while ((bytesRead = entryStream.read(buffer)) != -1) { 
          fos.write(buffer, 0, bytesRead); 
         } 
         System.out.println(entry.getName() + " extracted."); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 


       } else { 
        File file = new File(base + File.separator + entryName); 
        file.mkdir(); 
       } 
      } 
      fos.close(); 
      entryStream.close(); 
     } catch (ZipException ex) { 
      Logger.getLogger(fileUtils.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (IOException ex) { 
      Logger.getLogger(fileUtils.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

例子: 我用这个方法解压缩后的外商投资企业,它完全错过了一个文件夹,某些文件里面...

回答

1

尝试不同的解压缩(解压缩)的实现。 TrueZIP是众所周知的。