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

    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Enumeration;
    
    import org.apache.tools.zip.ZipEntry;
    import org.apache.tools.zip.ZipFile;
    
    public class UnZip{
    
        private static final int buffer = 10240;//10M 
        
        /**
         * 将zip文件解压为文件夹
         * @param path zip文件路径
         * @return
         */
        public static String unZip(String path) {
            int count = -1;
            String targetPath = "";
    
            File file = null;
            InputStream is = null;
            FileOutputStream fos = null;
            BufferedOutputStream bos = null;
    
            targetPath = path.substring(0, path.lastIndexOf(".")) + File.separator; // 保存解压文件目录
            if(!new File(targetPath).exists()){
                new File(targetPath).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 = targetPath + 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();
                return targetPath;
            } 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();
                }
            }
            return "";
        }
        
        public static void main(String[] args) {
            String filePath = "C:\Users\hwt\Desktop\6816.zip";
            System.out.println(unZip(filePath));
        }
    }
  • 相关阅读:
    odoo 的各种domain
    odoo search之时间搜索,时间段查询
    git 修改远程仓库地址
    Windows 挂起进程
    结构体 偏移量 (size_t)&(((s *)0)->m) , list相关
    Data Flow Diagram with Examples
    Windows环境,获取当前线程的ID,GetCurrentThreadId
    获取 保存 系统信息 [Windows]
    notepad正则删除关键词所在行
    文件或文件夹改变后,发信号让系统刷新
  • 原文地址:https://www.cnblogs.com/smart-hwt/p/8275757.html
Copyright © 2011-2022 走看看