springboot解压文件流zip压缩包

springboot解压文件流zip压缩包

原始文件存储的地方:
在这里插入图片描述
需要在当前目录下解压该文件,如下图:
在这里插入图片描述

代码示例:

private Result<String> getLocationGuideLayerName(YbYstbtqTaskResolveParam params, String fishnetLayerName) throws IOException {// 获取文件(这里的方法是系统的根据文件id获取文件相关的信息)FileDownloadVo fileDownloadVo = uploadService.getFile(params.getFileId());List<AnnexPO> fileInfo = uploadService.getFileInfo(new ArrayList<>(Collections.singletonList(params.getFileId())));if (fileInfo.size() < 1) {throw new RuntimeException("shp文件无效,请重试!");}ZipInputStream zis = new ZipInputStream(fileDownloadVo.getFileStream());ZipEntry zipEntry = zis.getNextEntry();// 文件存储目录+文件名字String filePathTemp = removeLastSlash(uploadConfig.getLocalStorageDirectory()) + fileInfo.get(0).getUploadPath(); // F:\temp\20240708\acbcac4038da45dfa77a3142e9a46501\测试数据2023SAR.zip// 文件存储目录不加文件名String newFilePath = formatFilePath(filePathTemp); // F:\temp\20240708\acbcac4038da45dfa77a3142e9a46501try {// 遍历ZIP文件中的每个条目while (zipEntry != null) {String filePath = newFilePath + File.separator + zipEntry.getName();if (!zipEntry.isDirectory()) {// 提取文件-遍历提取整个zip的所有文件extractFile(zis, filePath);// 关闭当前条目以读取下一个条目zis.closeEntry();}zipEntry = zis.getNextEntry();}// 关闭ZIP输入流zis.close();} catch (IOException e) {throw new RuntimeException("提取shpe文件失败: " + fileDownloadVo.getFileName() + ". 请重试!", e);}}/*** 辅助方法,用于从ZIP输入流中提取文件** @param zis ZIP输入流* @param filePath 文件的完整路径* @throws IOException 如果发生I/O错误*/private void extractFile(ZipInputStream zis, String filePath) throws IOException {BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));byte[] bytesIn = new byte[4096];int read = 0;while ((read = zis.read(bytesIn)) != -1) {bos.write(bytesIn, 0, read);}bos.close();}/*** @Description: 格式化文件路径,返回文件存储的路径** @Param:  [path]* @Return: java.lang.String* @Author yanghaoxing* @Date 2024/7/8 11:27*/public String formatFilePath(String path) {String newPath = path;// 找到最后一个'/'的索引位置int lastIndex = path.lastIndexOf('/');if (lastIndex != -1) { // 确保lastIndexOf找到了'/'newPath = path.substring(0, lastIndex);}return newPath;}/*** @Description: 去掉字符串最后一个 /** @Param:  [str]* @Return: java.lang.String* @Author yanghaoxing* @Date 2024/7/8 11:17*/public static String removeLastSlash(String str) {if (str != null && str.endsWith("/")) {return str.substring(0, str.length() - 1);}return str; // 不改变原字符串,如果它不以'/'结尾}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/45120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为od100问持续分享-1

我是一名软件开发培训机构老师&#xff0c;我的学生已经有上百人通过了华为OD机试&#xff0c;学生们每次考完试&#xff0c;会把题目拿出来一起交流分享。 重要&#xff1a;2024年5月份开始&#xff0c;考的都是OD统一考试&#xff08;D卷&#xff09;&#xff0c;题库已经整…

入门PHP就来我这(高级)24 ~ Session判断用户登录

有胆量你就来跟着路老师卷起来&#xff01; -- 纯干货&#xff0c;技术知识分享 路老师给大家分享PHP语言的知识了&#xff0c;旨在想让大家入门PHP&#xff0c;并深入了解PHP语言。 上一篇我们介绍了Session管理部分的概念&#xff0c;本文通过session来改写一些用户登录&…

一致性Hash问题及解决方案

Hash算法的应用场景 请求的负载均衡 Nginx的ip_hash策略可以在客户端ip不发生变化的情况下&#xff0c;将其发出的请求始终路由到同一个目标服务器上&#xff0c;实现会话粘滞&#xff0c;避免处理session共享问题。 如果没有ip_hash策略&#xff0c;可以通过维护一张映射表的…

常用包管理工具(apk、apt、yum)常用命令

apk 包管理工具apk是Alpine Linux中使用广泛的一个工具&#xff0c;用于管理软件包的安装、更新、卸载等操作。以下是一些常用的apk命令及其解释&#xff1a; 1.更新 apk update&#xff1a;从远程镜像源更新本地仓库中的所有软件包索引apk upgrade&#xff1a;升级本地已安装…

ts实现将相同类型的数据通过排序放在一起

看下效果&#xff0c;可以将相同表名称的字段放在一起 排序适用于中英文、数字 // 排序 function sortByType(items: any) {// 先按照类型进行排序items.sort((a: any, b: any) > {if (a.label < b.label) return -1;if (a.label > b.label) return 1;return 0;});r…

鸿蒙语言基础类库:【@ohos.application.testRunner (TestRunner)】 测试

TestRunner TestRunner模块提供了框架测试的能力。包括准备单元测试环境、运行测试用例。 如果您想实现自己的单元测试框架&#xff0c;您必须继承这个类并覆盖它的所有方法。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shizhen-skin/harmony-…

编程语言与数据结构的关系:深度解析与探索

编程语言与数据结构的关系&#xff1a;深度解析与探索 在编程的世界中&#xff0c;编程语言和数据结构是两个不可或缺的元素。它们之间既相互依存&#xff0c;又各自独立&#xff0c;共同构成了编程的核心。本文将深入探索编程语言与数据结构之间的复杂关系&#xff0c;从四个…

[氮化镓]Kevin J. Chen组新作—肖特基p-GaN HEMTs正栅ESD机理研究

这篇文章是发表在《IEEE Electron Device Letters》上的一篇关于Schottky型p-GaN栅极高电子迁移率晶体管&#xff08;HEMTs&#xff09;的正向栅极静电放电&#xff08;ESD&#xff09;机理研究的论文。文章由Jiahui Sun等人撰写&#xff0c;使用了基于碳化硅&#xff08;SiC&a…

8626 原子量计数

分析&#xff1a; 1. **读取输入**&#xff1a;首先&#xff0c;我们需要读取输入中的第一行&#xff0c;了解有多少个化学式需要处理。之后&#xff0c;对于每个化学式&#xff0c;我们逐行读取并进行处理。 2. **解析化学式**&#xff1a;对于每个化学式&#xff0c;我们需要…

8627 数独

为了判断数独解是否合法&#xff0c;我们需要遵循以下步骤&#xff1a; 1. **检查每一行**&#xff1a;确保1到9每个数字在每一行中只出现一次。 2. **检查每一列**&#xff1a;确保1到9每个数字在每一列中只出现一次。 3. **检查每个3x3的宫**&#xff1a;确保1到9每个数字在…

细胞通讯之cellchat的流程

愿武艺晴小朋友一定得每天都开心 在细胞通讯的领域内有cellphoneDB、cellchat、iTALK等多种cell-cell communication的工具; 其中cellchat,我觉得它比较的亲民和好看吧^_^ cellchat <- createCellChat(Matrix(health@assays$RNA$data,sparse = T), #用于seurat.v5对象 …

文件类:如何将excel文件转为csv文件(且保留时间格式)?

最近有个场景&#xff0c;在ftp服务器上&#xff0c;读取csv文件并入库&#xff0c;但是客户提供的一部分文件却是xls文件&#xff0c;就得搞个将excel转为csv文件的方法&#xff0c;话不多说直接开干。 方法 public static void convertExcelToCSV(String excelFilePath, Str…

掌握axios与Vue 3:构建高效HTTP请求的终极指南

引言 axios作为一个广泛使用的JavaScript库&#xff0c;因其简洁的API、强大的功能和良好的浏览器兼容性&#xff0c;成为了许多前端开发者在Vue 3项目中的首选。 axios简介 axios是什么&#xff1f; axios是一个基于Promise的HTTP客户端&#xff0c;用于浏览器和node.js环境…

【视频】R语言广义加性模型GAMs非线性效应、比较分析草种耐寒性实验数据可视化

全文链接&#xff1a;https://tecdat.cn/?p36979 原文出处&#xff1a;拓端数据部落公众号 广义加法模型&#xff08;Generalized Additive Models, GAMs&#xff09;作为一种高度灵活的统计工具&#xff0c;显著扩展了广义线性模型&#xff08;Generalized Linear Models, …

我被手机所伤,竟如此憔悴。

临睡前&#xff0c;刚刷完小视频&#xff0c;感觉好无聊。一阵阵空虚感袭来。看看时间&#xff0c;哦&#xff0c;原来我下班后一直从6点刷视频到11点。 哎&#xff0c;太空虚了&#xff0c;又马上要睡觉了&#xff0c;为什么会这么难受呢?明明我大学&#xff0c;高中&#x…

代码随想录算法训练营第9天

151.反转字符串中的单词 题目链接&#xff1a;151. 反转字符串中的单词 - 力扣&#xff08;LeetCode&#xff09; 视频链接&#xff1a;代码随想录 (programmercarl.com) 第一想法 使用split函数然后倒序相加 代码随想录想法 先去除空格&#xff0c;再将整个字符串反转&…

Android11 应用启动流程

应用层调用startActivity&#xff0c;会跨进程调用导致ATMS的startActivityAsUser方法被调用 //frameworks/base/services/core/java/com/android/server/wm/ActivityTaskManagerService.java private int startActivityAsUser(IApplicationThread caller, String callingPack…

数字信号处理及MATLAB仿真(4)——量化的其他概念

上回书说到AD转换的两个步骤——量化与采样两个步骤。现在更加深入的去了解以下对应的概念。学无止境&#xff0c;要不断地努力才有好的收获。万丈高楼平地起&#xff0c;唯有打好基础&#xff0c;才能踏实前行。 不说了&#xff0c;今天咱们继续说说这两个步骤&#xff0c;首先…

每日刷题(二分图,二分查找,dfs搜索)

目录 1.P3853 [TJOI2007] 路标设置 2.P1129 [ZJOI2007] 矩阵游戏 3.P1330 封锁阳光大学 4.Trees 5.P1141 01迷宫 1.P3853 [TJOI2007] 路标设置 P3853 [TJOI2007] 路标设置 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 先求出每个路标之间的距离&#xff0c;再二分查找每…

新媒体运营都需要掌握哪些技术?沈阳新媒体运营免费培训

新媒体运营需要掌握的技术包括内容创作、FAB产品介绍法、用户运营、社群运营、活动策划和数据分析。这个岗位在现代社会中的重要性日益突出&#xff0c;随着互联网的发展&#xff0c;新媒体已成为人们获取信息的主要渠道之一&#xff0c;而新媒体运营则是通过各种新媒体平台进行…