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");
    }
    }
  • 相关阅读:
    js停止(阻止)浏览器继续加载内容
    网页重构中区分IE6、IE7、IE8及标准浏览器的最佳方法
    MySQL学习笔记
    android asmack 注册 登陆 聊天 多人聊天室 文件传输
    解决系统改变字体大小的时候导致的界面布局混乱的问题
    Android UmengShareSDK第三方登录
    Android 设计模式
    Android HTTP session && cookie
    Android之使用HTTP协议的Get/Post方式向服务器提交数据
    Android之Activity的几种跳转方式
  • 原文地址:https://www.cnblogs.com/tobiasy/p/8258430.html
Copyright © 2011-2022 走看看