开发者

java如何解压zip压缩包

目录
  • Java解压zip压缩包
    • 实例代码
    • 结果如下
  • 总结

    java解压zip压缩包

    坐在旁边的小伙伴问我怎么用 java 将服务器上的压缩文件解压出来,我索性给他写了个 demo ,也顺手记录一下。

    实例代码

    package com.yuhuofei.utjsils;
    
    import java.io.*;
    import java.nio.charset.Charset;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    
    /**
     * @Description
     * @ClassName UnzipUtils
     * @Author yuhuofei
     * @Date 2android022/8/10 21:03
     * @Version 1.0
     */
    public class UnzipUtils {
        /**
         * 解压zip压缩文件到指定目录
         *
         * @param zipPath zip压缩文件绝对路径
         * @param descDir 指定的解压目录
         */
        public static void unzipFile(String zipPath, String descDir) throws IOException {
            try {
                File zipFile = new File(zipPath);
                if (!zipFile.exists()) {
                    throw new IOException("要解压的压缩文件不存在");
                }
                File pathFile = new File(descDir);
                if (!pathFile.exists()) {
                    pathFile.mkdirs();
                }
                InputStream input = new FileInputStream(zipPath);
                unzipWithStream(input, descDir);
            } catch (Exception e) {
                throw new IOException(e);
            }
        }
    
        /**
         * 解压
         *
         * @param inputStream
         * @param descDir
         */
        public static void unzipWithStream(InputStream inputStream, String descDir) {
            if (!descDir.endsWith(File.separator)) {
                descDir = descDir + File.separator;
            }
            try (ZipInputStream zipInputStream = new ZipInputStream(inputStream, Charset.forName("GBK"))) {
                ZipEntry zipEntry;
                while ((zipEntry = zipInputStream.getNextEntry()) != null) {
               编程客栈     String zipEntryNameStr = zipEntry.getName();
                    String zipEntryName = zipEntryNameStr;
                    if (zipEntryNameStr.contains("/")) {
                        String str1 www.devze.com= zipEntryNameStr.substring(0, zipEntryNameStr.indexOf("/"));
                        zipEntryName = zipEntryNameStr.substring(str1.length() + 1);
                    }
                    String outPath = (descDir + zipEntryName).replace("\\\\", "/");
                    File outFile = new File(outPath.substring(0, outPath.lastIndexOf('/')));
                    if (!outFile.exists()) {
                        outFile.mkdirs();
                    }
                    if (new File(outPath).isDirectory())php {
                        continue;
                    }
                    writeFile(outPath, zipInputStream);
                    zipInputStream.closeEntry();
                }
                System.out.println("======解压成功=======");
            } catch (IOException e) {
                System.out.println("压缩包处理异常,异常信息{}" + e);
            }
        }
    
        //将流写到文件中
        public static void writeFile(String filePath, ZipInputStream zipInputStream) {
            try (OutputStream outputStream = new FileOutputStream(filePath)) {
                byte[] bytes = new byte[4096];
                int len;
                while ((len = zipInputStream.read(bytes)) != -1) {
                    outputStream.write(bytes, 0, len);
                }
            } catch (IOException ex) {
                System.out.println("解压文件时,写出到文件出错");
            }
        }
    	
    	//测试方法
        public static void main(String[] args) throws IOException {
    
            String zipPath = "D:/test/测试文件.zip";
            String descDir = "D:/test/解压/";
    
            unzipFile(zipPath, descDir);
        }
    }
    
    

    结果如下

    java如何解压zip压缩包

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜