news 2026/5/28 0:35:07

文件多级解压

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
文件多级解压

文章目录

    • 概要
    • 整体架构流程
    • 技术名词解释
    • 技术细节
    • 小结

基本解压

基础解压,仅实现将输入压缩包解压到指定文件夹下

代码如下:

package weaver.formmode.webservices; import java.io.*; import java.nio.charset.StandardCharsets; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; // 根据传入的压缩包实现解压缩到指定位置,当含有多个压缩包要递归解压,包含文件夹要把文件夹删除,解压结果仅保持一级结构 public class ExtractDemo { // Extract the files from the archive. /** 默认 4 KB 缓冲 */ private static final int BUFFER = 4096; /** * 解压 ZIP 到指定目录 * @param zipFilePath 压缩包绝对路径 * @param destDirPath 目标目录(若不存在则自动创建) * @throws IOException 解压失败时抛出 */ public static void unzip(String zipFilePath, String destDirPath) throws IOException { unzip(zipFilePath, destDirPath, null); } /** * 带进度回调的解压 * @param zipFilePath 压缩包绝对路径 * @param destDirPath 目标目录(若不存在则自动创建) * @param callback 进度回调(可为 null) * @throws IOException 解压失败时抛出 */ public static void unzip(String zipFilePath, String destDirPath, ProgressCallback callback) throws IOException { File destDir = new File(destDirPath); if (!destDir.exists()) destDir.mkdirs(); try (ZipInputStream zis = new ZipInputStream( new BufferedInputStream(new FileInputStream(zipFilePath)), StandardCharsets.UTF_8)) { ZipEntry entry; while ((entry = zis.getNextEntry()) != null) { String entryName = entry.getName(); File outFile = new File(destDir, entryName); // 防止 zip 炸弹(../ 跳出目标目录) if (!outFile.getCanonicalPath().startsWith(destDir.getCanonicalPath() + File.separator)) { throw new IOException("非法路径: " + entryName); } if (entry.isDirectory()) { outFile.mkdirs(); } else { outFile.getParentFile().mkdirs(); try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(outFile))) { byte[] buffer = new byte[BUFFER]; int len; while ((len = zis.read(buffer)) != -1) { bos.write(buffer, 0, len); } } } zis.closeEntry(); if (callback != null) callback.onEntry(entryName, outFile.length()); } } } /** 进度回调接口 */ @FunctionalInterface public interface ProgressCallback { void onEntry(String entryName, long bytesWritten); } public static void main(String[] args) throws Exception { String zip = "D:\\DATA\\DS.zip"; String dir = "D:\\DATA\\duckcp-main"; unzip(zip, dir, (name, size) -> System.out.println("解压中 -> " + name + " " + size + " B")); } }

整体架构流程

提示:这里可以添加技术整体架构

例如:
在语言模型中,编码器和解码器都是由一个个的 Transformer 组件拼接在一起形成的。

技术名词解释

提示:这里可以添加技术名词解释

例如:

  • Bert
  • GPT 初代
  • GPT-2
  • GPT-3
  • ChatGPT

技术细节

提示:这里可以添加技术细节

例如:

  • API
  • 支持模型类型

小结

提示:这里可以添加总结

例如:

提供先进的推理,复杂的指令,更多的创造力。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/17 3:44:26

Flashtool终极指南:索尼Xperia刷机避坑深度解析

索尼Xperia设备刷机过程中,Flashtool作为专业刷机解决方案,能够帮你避开各种技术陷阱,实现完美的系统定制体验。掌握Flashtool的核心功能模块,让你的设备焕发新生。 【免费下载链接】Flashtool Xperia device flashing 项目地址…

作者头像 李华
网站建设 2026/5/16 13:59:24

Charticulator实战指南:3大核心难题的突破性解决方案

Charticulator实战指南:3大核心难题的突破性解决方案 【免费下载链接】charticulator Interactive Layout-Aware Construction of Bespoke Charts 项目地址: https://gitcode.com/gh_mirrors/ch/charticulator 还在为传统图表工具无法满足定制化需求而苦恼&a…

作者头像 李华
网站建设 2026/5/26 7:16:16

5分钟快速上手:用pixelmatch打造精准的前端视觉测试系统

5分钟快速上手:用pixelmatch打造精准的前端视觉测试系统 【免费下载链接】pixelmatch The smallest, simplest and fastest JavaScript pixel-level image comparison library 项目地址: https://gitcode.com/gh_mirrors/pi/pixelmatch 在当今快速迭代的前端…

作者头像 李华
网站建设 2026/5/14 3:25:36

Charticulator完全指南:零基础掌握交互式图表设计

Charticulator完全指南:零基础掌握交互式图表设计 【免费下载链接】charticulator Interactive Layout-Aware Construction of Bespoke Charts 项目地址: https://gitcode.com/gh_mirrors/ch/charticulator Charticulator作为一款革命性的交互式图表设计工具…

作者头像 李华
网站建设 2026/5/14 3:25:56

IDM使用技术全解析:从原理到实战的完整解决方案

项目功能概述 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script IDM Activation Script是一个专业的IDM使用和试用期管理工具,通过智能脚本技术实现持续…

作者头像 李华