news 2026/4/8 1:03:56

文件多级解压

作者头像

张小明

前端开发工程师

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/3/31 5:36:35

USD Unity SDK深度探索:从技术解密到实战进阶

开篇:为什么USD正在重塑3D内容创作生态? 【免费下载链接】usd-unity-sdk Integration of Pixars Universal Scene Description into Unity 项目地址: https://gitcode.com/gh_mirrors/us/usd-unity-sdk 在当今数字内容创作领域,我们面…

作者头像 李华
网站建设 2026/3/18 20:27:38

Dify在艺术展览导览词生成中的文化敏感度

Dify在艺术展览导览词生成中的文化敏感度 在一场关于非洲原住民仪式面具的国际巡展中,策展团队原本计划使用AI自动生成多语言导览词以提升效率。然而,当系统输出“这些原始部落通过神秘舞蹈与未开化的信仰沟通神灵”时,问题立刻浮现——看似流…

作者头像 李华
网站建设 2026/4/3 2:40:17

GenomicSEM:揭秘遗传密码的结构方程建模革命

GenomicSEM:揭秘遗传密码的结构方程建模革命 【免费下载链接】GenomicSEM R-package for structural equation modeling based on GWAS summary data 项目地址: https://gitcode.com/gh_mirrors/ge/GenomicSEM 你是否曾好奇,那些隐藏在DNA序列中的…

作者头像 李华
网站建设 2026/4/5 22:30:54

Charticulator数据可视化设计:从零构建专业级交互图表

Charticulator数据可视化设计:从零构建专业级交互图表 【免费下载链接】charticulator Interactive Layout-Aware Construction of Bespoke Charts 项目地址: https://gitcode.com/gh_mirrors/ch/charticulator 还在为传统图表工具的局限性而烦恼吗&#xff…

作者头像 李华