news 2026/4/16 13:59:33

文件多级解压

作者头像

张小明

前端开发工程师

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/4/16 8:48:11

UE5体素引擎深度解析:3种算法如何重塑你的游戏世界?

UE5体素引擎深度解析:3种算法如何重塑你的游戏世界? 【免费下载链接】UE5VoxelTutorial A collection of voxel mesh generation algorithms 项目地址: https://gitcode.com/gh_mirrors/ue/UE5VoxelTutorial 在游戏开发的星辰大海中,U…

作者头像 李华
网站建设 2026/4/16 8:48:15

Dify工作流Web界面开发实战:零代码构建智能应用交互体验

Dify工作流Web界面开发实战:零代码构建智能应用交互体验 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程,自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Dif…

作者头像 李华
网站建设 2026/4/16 8:48:09

3分钟快速部署Sun-Panel:打造你的专属NAS导航中心终极指南

3分钟快速部署Sun-Panel:打造你的专属NAS导航中心终极指南 【免费下载链接】sun-panel 一个NAS导航面板、Homepage、浏览器首页。 项目地址: https://gitcode.com/gh_mirrors/su/sun-panel Sun-Panel作为一款开源的NAS导航面板和浏览器首页工具,能…

作者头像 李华
网站建设 2026/4/15 21:20:46

如何永久解锁IDM下载加速?三步快速配置指南

如何永久解锁IDM下载加速?三步快速配置指南 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为IDM试用期结束后的下载速度骤降而烦恼吗&#xff1…

作者头像 李华
网站建设 2026/4/15 12:39:35

【Java毕设源码分享】基于springboot+vue的时尚美妆电商网站的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/16 10:17:51

LiveSplit终极指南:从零开始的速度跑计时器精通之路

在追求极致速度的竞技世界中,每一毫秒都承载着突破的渴望。LiveSplit作为速度跑社区的计时标杆,以其精准的计时能力和丰富的定制选项,成为了无数跑者信赖的竞技伙伴。 【免费下载链接】LiveSplit A sleek, highly customizable timer for spe…

作者头像 李华