java 解压文件

java 解压文件

点击查看 vue spring boot 上传 文件

//要压缩的文件
String zipName = "D:\\file\\test.zip";
//压缩到的目录
String targetDirName = "D:\\upZip"
/**
     * @Description: 将指定的zip文件解压到指定目录下,其中:zipName:文件名,targetDirName:需解压到的目录
     **/
    public static File upzipFile(String zipName, String targetDirName) throws Exception {

        if (!targetDirName.endsWith(File.separator)) {
            targetDirName += File.separator;
        }
		//防止乱码,获得压缩的格式
        String fileEncode = EncodeUtil.getEncode(zipName, true);

        try {
            // 根据zip文件创建ZipFile对象,此类的作用是从zip文件读取条目
            ZipFile zipFile = new ZipFile(zipName, Charset.forName(fileEncode));
            ZipEntry zn = null;
            String entryName = null;
            String targetFileName = null;
            byte[] buffer = new byte[4096];
            int bytes_read;
            Enumeration entrys = zipFile.entries();            // 获取ZIP文件里所有的文件条目的名字
            File targetFile = null;
            FileOutputStream os = null;
            InputStream is = null;
            //entrys.hasMoreElements();
            while (entrys.hasMoreElements()) {                // 循环遍历所有的文件条目的名字
                zn = (ZipEntry) entrys.nextElement();
                System.out.println("zn:" + zn);
                entryName = zn.getName();                // 获得每一条文件的名字
                System.out.println("entryName:" + entryName);
                targetFileName = targetDirName + entryName;
                if (zn.isDirectory()) {
                    new File(targetFileName).mkdirs();        // 如果zn是一个目录,则创建目录
                    continue;
                } else {
                    new File(targetFileName).getParentFile().mkdirs();// 如果zn是文件,则创建父目录
                }
                targetFile = new File(targetFileName);    // 否则创建文件
                System.out.println("正在创建文件:" + targetFile.getAbsolutePath());
                os = new FileOutputStream(targetFile);// 打开文件输出流
                is = zipFile.getInputStream(zn);    // 从ZipFile对象中打开entry的输入流
                while ((bytes_read = is.read(buffer)) != -1) {
                    os.write(buffer, 0, bytes_read);
                }
            }
            os.close();                                // 关闭流
            is.close();
            zipFile.close();
            System.out.println("解压缩" + zipName + "成功!");
            return targetFile;
        } catch (IOException err) {
            System.err.println("解压缩" + zipName + "失败: " + err);
        }
        return null;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>