zoukankan      html  css  js  c++  java
  • java 解压zip 文件

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    import java.util.zip.ZipInputStream;
    public class ZipTool {
     
     public static void main(String[] args) {
      //F:/test1  为需要解压文件的根目录
      traversDir("F:/test1");
     }

     /**
      * 递归解压根目录下zip文件,解压后删除zip文件。
      * @param filename
      */
     public static void traversDir(String filename) {
      File file = new File(filename);
      if (file != null) {
       if (file.isDirectory() && file.list().length != 0) {
        for (int i = 0; i < file.list().length; i++) {
         File f = file.listFiles()[i];
         if (!f.isDirectory() && f.getName().endsWith(".zip")) {
          System.out.println(f.getPath());
          System.out.println(f.getParent());
          try {
           //解压文件 方法
           unZip(f.getPath());

           //解压后删除文件 begin
           File deFile = new File(f.getPath());
           if (f.exists()) {
            boolean flag = f.delete();
            if (flag) {
             System.out.println(f.getPath()
               + " file delete sucess!");
            } else {
             System.out.println(f.getPath()
               + " file delete fail!");
            }
           }
           //解压后删除文件 end
          } catch (Exception e) {

          }
         } else {
          traversDir(f.toString());
         }
        }
       }

      }
     }

     /**
      * 解压文件的方法
      * @param path
      * @throws IOException
      */
     public static void unZip(String path) throws IOException {
      File file = new File(path);//压缩文件 
      String savePath = file.getParent();

      ZipFile zipFile = new ZipFile(file);//实例化ZipFile,每一个zip压缩文件都可以表示为一个ZipFile 

      //实例化一个Zip压缩文件的ZipInputStream对象,可以利用该类的getNextEntry()方法依次拿到每一个ZipEntry对象 
      FileInputStream fileInputStream = new FileInputStream(file);
      ZipInputStream zipInputStream = new ZipInputStream(fileInputStream);

      ZipEntry zipEntry = null;

      while ((zipEntry = zipInputStream.getNextEntry()) != null) {

       String fileName = zipEntry.getName();

       File temp = new File(savePath + "\\" + fileName);

       if (!temp.getParentFile().exists())

        temp.getParentFile().mkdirs();

       OutputStream os = new FileOutputStream(temp);

       //通过ZipFile的getInputStream方法拿到具体的ZipEntry的输入流 

       InputStream is = zipFile.getInputStream(zipEntry);

       int len = 0;

       while ((len = is.read()) != -1) {
        os.write(len);
       }
       os.close();

       is.close();

      }
      // 关闭文件流
      zipInputStream.close();
      fileInputStream.close();
      zipFile.close(); //zipFile 文件流关闭, 如果缺少这语句, 在后续的删除文件 会失败,无法删除文件

     }
    }

  • 相关阅读:
    jQuery入门(8):工具
    jQuery入门(2):核心(核心函数,对象访问,多库共存)
    jQuery入门(6):Ajax
    jQuery入门(7):效果
    jQuery入门(4):CSS相关API
    threadwait/sleep
    【转】Query的extend扩展方法使用点滴
    jquery.query2.1.7.js 操作url
    zhuan
    通用分页存储过程 采用ROW_NUMBER(),支持2005及以后的版本
  • 原文地址:https://www.cnblogs.com/edison2012/p/2826536.html
Copyright © 2011-2022 走看看