您的位置 首页 java

基于JAVA代码实现zip文件解压

在文档管理系统中需要实现zip文件的预览,一般的做法是将zip文件解压,然后获取此目录下的文件信息,此处代码为利用代码直接实现zip文件的解压:

 import  JAVA .io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

/**
 * <基于java代码解压zip文件/>
 * 
 * @author Kaven Mei<scokaven@163.com>
 * @company KAVEN(www.kaven.cn)
 * @date 2020年4月10日 上午9:44:45
 * @version 1.0
 */

public class ZipTest {

  private static Zip file  zipFile;

  public static void main(String[] args) {
    String directoryPath = "F:/zipFile/";// 解压路径
    String filePath = "F:/zipFile/nginx-1.8.1.zip";// 解压文件
    try {
      printZipTxt(filePath);
      unZipFiles(filePath, directoryPath);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  /**
   * 获取zip文件中的内容
   * 
   * @param zipPathStr
   * @throws IOException
   */
  public static void printZipTxt(String zipPathStr) throws IOException {
    zipFile = new ZipFile(zipPathStr);
    for (Enumeration<? extends ZipEntry> e = zipFile.entries(); e.hasMoreElements();) {
      ZipEntry entry = e.nextElement();
      System.out.println("文件名:" + entry.getName() + ", 内容如下:");
      if (entry.getName().toLowerCase().endsWith(".txt")) {
        InputStream is = null;
        is = zipFile.getInputStream(entry);
         byte [] b = new byte[1024];
        int leng = -1;
        String txtStr = "";
        while ((leng = is.read(b)) != -1) {
          txtStr += new String(b, 0, leng);
        }
        System.out.println(txtStr);
        if (is != null) {
          is. close ();
        }
      }
    }
  }

  /**
   * 创建zip中文件目录
   * 
   * @param zipPath
   * @param descDir
   * @throws IOException
   */
  public static void unZipFiles(String zipPath, String descDir) throws IOException {
    unZipFiles(new File(zipPath), descDir);
  }

  /**
   * 解压内容
   * 
   * @param zipFile
   * @param descDir
   * @throws IOException
   */
  @SuppressWarnings("rawtypes")
  public static void unZipFiles(File fileZip, String descDir) throws IOException {
    File pathFile = new File(descDir);
    if (!pathFile. exists ()) {
      pathFile.mkdirs();
    }
    zipFile = new ZipFile(fileZip);
    for (Enumeration entries = zipFile.entries(); entries.hasMoreElements();) {
      ZipEntry entry = (ZipEntry) entries.nextElement();
      String zipEntryName = entry.getName();
      InputStream in = zipFile.getInputStream(entry);
      String outPath = (descDir + zipEntryName).replaceAll("\\*", "/");
      // 判断路径是否存在,不存在则创建文件路径
      File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
      if (!file.exists()) {
        file.mkdirs();
      }
      // 判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
      if (new File(outPath).isDirectory()) {
        continue;
      }
      // 输出文件路径信息
      System.out.println(outPath);

      OutputStream out = new FileOutputStream(outPath);
      byte[] buf1 = new byte[1024];
      int len;
      while ((len = in.read(buf1)) > 0) {
        out.write(buf1, 0, len);
      }
      in.close();
      out.close();
    }
    System.out.println("******************解压完毕********************");
  }
}  

文章来源:智云一二三科技

文章标题:基于JAVA代码实现zip文件解压

文章地址:https://www.zhihuclub.com/191527.shtml

关于作者: 智云科技

热门文章

网站地图