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

    package com.xfm.utils;

    import org.apache.tools.zip.ZipEntry;
    import org.apache.tools.zip.ZipFile;

    import java.io.*;
    import java.util.Enumeration;

    /**
    * 解压Zip文件工具类
    *
    * @author xfm
    */
    public class Decompress {
    private static final int buffer = 2048;

    /**
    * 解压Zip文件
    *
    * @param path 文件目录
    */
    public static void unZip(String path) {
    int count = -1;
    String savepath = "";

    File file = null;
    InputStream is = null;
    FileOutputStream fos = null;
    BufferedOutputStream bos = null;
    //保存解压文件目录
    savepath = path.substring(0, path.lastIndexOf(".")) + File.separator;
    //创建保存目录
    new File(savepath).mkdir();
    ZipFile zipFile = null;
    try {
    //解决中文乱码问题
    zipFile = new ZipFile(path, "gbk");
    Enumeration<?> entries = zipFile.getEntries();

    while (entries.hasMoreElements()) {
    byte buf[] = new byte[buffer];

    ZipEntry entry = (ZipEntry) entries.nextElement();

    String filename = entry.getName();
    boolean ismkdir = false;
    //检查此文件是否带有文件夹
    if (filename.lastIndexOf("/") != -1) {
    ismkdir = true;
    }
    filename = savepath + filename;
    //如果是文件夹先创建
    if (entry.isDirectory()) {
    file = new File(filename);
    file.mkdirs();
    continue;
    }
    file = new File(filename);
    //如果是目录先创建
    if (!file.exists()) {
    if (ismkdir) {
    //目录先创建
    new File(filename.substring(0, filename.lastIndexOf("/"))).mkdirs();
    }
    }
    file.createNewFile(); //创建文件

    is = zipFile.getInputStream(entry);
    fos = new FileOutputStream(file);
    bos = new BufferedOutputStream(fos, buffer);

    while ((count = is.read(buf)) > -1) {
    bos.write(buf, 0, count);
    }
    bos.flush();
    bos.close();
    fos.close();

    is.close();
    }

    zipFile.close();

    } catch (IOException ioe) {
    ioe.printStackTrace();
    } finally {
    try {
    if (bos != null) {
    bos.close();
    }
    if (fos != null) {
    fos.close();
    }
    if (is != null) {
    is.close();
    }
    if (zipFile != null) {
    zipFile.close();
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }


    public static void main(String[] args) {
    unZip("E:\tobiasy_decompiler_v2.4.0_SNAPSHOT.zip");
    }
    }
  • 相关阅读:
    十天冲刺之一
    每日日报2021 4/30
    每日日报2021 4/29
    每日日报2021 4/28
    每日日报2021 4/27
    每日日报2021 4/26
    每日日报2021 4/24
    每日日报2021 4/23
    《梦断代码》读后感
    273. Integer to English Words
  • 原文地址:https://www.cnblogs.com/tobiasy/p/8258430.html
Copyright © 2011-2022 走看看