长沙网站制作哪家强/百度广告联盟怎么加入

长沙网站制作哪家强,百度广告联盟怎么加入,工作总结及2023年工作计划,腾讯邮箱网页登录入口前言 在实际项目中,我们可能会接到将文件或者资料打包压缩导出的需求,例如将系统中某些生成的文件一起打包压缩下载提供给客户使用,今天提供一个jdk自带的工具类快速实现打包压缩的功能,方法我已经封装好,大家如果在项…

前言

   在实际项目中,我们可能会接到将文件或者资料打包压缩导出的需求,例如将系统中某些生成的文件一起打包压缩下载提供给客户使用,今天提供一个jdk自带的工具类快速实现打包压缩的功能,方法我已经封装好,大家如果在项目中遇到类似需求可以直接复制过去使用

一、思路和步骤

  首先将我们在系统上生成的文件或者服务器上现有的文件读取到输出流中,然后传给zip压缩流实现压缩并响应到浏览器下载

具体步骤:

1、将文件转换为流
2、将生成好的文件流数据和文件名(压缩包内一个文件对应一个文件名)封装
3、将数据添加到压缩流中进行压缩
4、响应到浏览器下载
5、关闭流

二、工具类封装

  下面是一个工具类封装和具体实现
1、封装一个数据实体

import lombok.AllArgsConstructor;
import lombok.Data;/*** @Author: 你住过的屋檐* @Date: 2025/2/26 下午5:34* @aphorism You are lucky to have someone to help you.No one to help you, is just fate.No one should do anything for you, because life is your own, you are responsible for yourself*/
@Data
@AllArgsConstructor
public class FileData {/*** 文件名*/private String fileName;/*** 文件流字节数组*/private byte[] fileByte;
}

2、工具类

import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;/*** @Author: 你住过的屋檐* @Date: 2025/2/26 下午4:01* @aphorism You are lucky to have someone to help you.No one to help you, is just fate.No one should do anything for you, because life is your own, you are responsible for yourself*/
public class ZipUtils {/*** 压缩文件并下载* @param zipName 压缩包名称* @param fileDataList 压缩数据流* @param response 响应对象* @throws IOException*/public static void downLoadZip(String zipName, List<FileData> fileDataList, HttpServletResponse response) throws IOException {if(fileDataList==null||fileDataList.isEmpty()){throw new IOException("数据为空");}ByteArrayOutputStream zipOutputStream = new ByteArrayOutputStream();ZipOutputStream zos = new ZipOutputStream(zipOutputStream);for (FileData fileData : fileDataList) {// 添加文件到 ZIP件中addFileToZip(zos, fileData.getFileName(), fileData.getFileByte());}// finish()方法用于完成当前 ZIP 文件的写入。它会写入 ZIP 文件的结束记录,确保 ZIP 文件的完整性zos.finish();//关闭 ZipOutputStream,释放资源zos.close();// 创建输入流资源ByteArrayInputStream in = new ByteArrayInputStream(zipOutputStream.toByteArray());// 设置响应头,通知浏览器下载response.setContentType("application/force-download");String fileName= URLEncoder.encode(zipName,"utf-8");response.setHeader("Content-disposition", "attachment; filename="+fileName );response.setContentLength(in.available());OutputStream out = response.getOutputStream();byte[] b= new byte[1024];int len;while((len=in.read(b))!=-1){out.write(b,0,len);}//用于强制将缓冲区中的数据立即写入到目标输出流中,避免数据丢失。out.flush();//关闭输出流并释放资源out.close();//关闭输入流并释放资源in.close();}/*** 添加文件到 ZIP 文件中* @param zipOut* @param fileName 文件名* @param content 添加内容* @throws IOException*/private static  void addFileToZip(ZipOutputStream zipOut, String fileName, byte[] content) throws IOException {ZipEntry zipEntry = new ZipEntry(fileName);zipOut.putNextEntry(zipEntry);zipOut.write(content);zipOut.closeEntry();}
}

三、实现效果

下面是演示效果
1、在D盘创建了一个文档,写一个hello world!
在这里插入图片描述
2、写一个调用接口

import com.customs.broker.utils.zip.FileData;
import com.customs.broker.utils.zip.ZipUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.ArrayList;
import java.util.List;@RestController
public class TestController {@GetMapping("/download")public void downLoadZip(HttpServletResponse response){try {File file = new File("D:\\测试文档.txt");//转换为输入流FileInputStream fis = new FileInputStream(file);ByteArrayOutputStream outputStream = new ByteArrayOutputStream();//读取文件到输出流中byte[] buffer = new byte[1024];int len;while ((len = fis.read(buffer)) != -1) {outputStream.write(buffer, 0, len);}List<FileData> fileDataList = new ArrayList<>();//将文件流和文件名封装进实体FileData fileData = new FileData("测试文档.txt", outputStream.toByteArray());//添加fileDataList.add(fileData);//执行压缩打包下载ZipUtils.downLoadZip("test.zip",fileDataList,response);} catch (IOException e) {e.printStackTrace();}}}

3、启动项目后浏览器执行调用接口

http://127.0.0.1:8080/download

直接生成了压缩包并且下载到了浏览器
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6648954e3e74475da79d0eb373fe0695.png

打包压缩包已经将hello world!的文档压缩进压缩包
在这里插入图片描述

为了帮助更多像你一样的读者,我将持续在专栏中分享技术干货和实用技巧。如果你觉得这篇文章对你有帮助,可以考虑关注我的专栏,谢谢。

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

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

相关文章

腾讯云扩容记录

腾讯云扩容&#xff1a; sudo yum install -y cloud-utils-growpart 安装扩容工具 sudo file -s /dev/vda1 有数据 sudo LC_ALLen_US.UTF-8 growpart /dev/vda 1 sudo resize2fs /dev/vda1 df -Th 完毕 以下是对执行的命令的详细解释以及背后的原理&#xff1a; 1. 安装 cloud…

服务流程设计和服务或端口重定向及其websocket等应用示例

服务流程设计和服务或端口重定向及其websocket等应用示例 目录 服务或端口重定向的服务设计和websocket等应用示例 一、通用请求控制流程 1.1、入口 1.2、所有GET请求首先预检控制单元 1.3、http请求会分别自动307重定向 1.4、所有请求首先执行跨源控制单元 1.5、然后…

使用DeepSeek+KIMI生成高质量PPT

一、使用DeepSeek DeepSeek官网&#xff1a;DeepSeek 点击“开始对话”&#xff0c;进入交互页面。 在上图中&#xff0c;输入问题&#xff0c;即可获取AI生成的结果。 基础模型&#xff08;V3&#xff09;&#xff1a;通用模型&#xff08;2024.12&#xff09;&#xff0c;高…

MySQL—使用binlog日志恢复数据

一、binlog日志恢复数据简介 在 MySQL 中&#xff0c;使用二进制日志&#xff08;binlog&#xff09;恢复数据是一种常见的用于故障恢复或数据找回的方法。以下是详细的使用步骤&#xff1a; 确认 binlog 已启用&#xff1a;首先需要确认 MySQL 服务器已经启用了二进制日志功…

VADv2: 基于矢量表征和概率规划的E2E架构

1. 写在前面 今天分享一篇自动驾驶领域的论文VADv2(End-to-End Vectorized Autonomous Driving via Probabilistic Planning), 基于矢量表征和概率规划的E2E架构,2024年2月份华中科技大和地平线合作的一篇文章, 在经典的端到端模型架构上作出了基于概率规划去输出规划轨迹的…

NLP11-命名实体识别(NER)概述

目录 一、序列标注任务 常见子任务 二、 命名实体识别&#xff08;NER&#xff09; &#xff08;一&#xff09;简介 &#xff08;二&#xff09;目标 &#xff08;三&#xff09;应用场景 &#xff08;四&#xff09;基本方法 &#xff08;五&#xff09;工具与资源 一…

虚拟仿真无线路由器5G和2.4G发射信号辐射对比(虚拟仿真得出最小安全距离,与国际标准要求一致)

1、前言 有人说&#xff0c;只要有电磁波的地方就有辐射。5G和2.4G信号辐射强度是多少&#xff1f;是否会对人体构成危害&#xff1f;无线路由器的2.4GHz频段&#xff0c;频率范围&#xff1a;2.4 GHz 至 2.4835 GHz&#xff0c;信道宽度&#xff1a;通常为20 MHz&#xff0c;…

【数据挖掘】Matplotlib

Matplotlib 是 Python 最常用的 数据可视化 库之一&#xff0c;在数据挖掘过程中&#xff0c;主要用于 数据探索 (EDA)、趋势分析、模式识别 和 结果展示。 &#x1f4cc; 1. Matplotlib 基础 1.1 安装 & 导入 # 如果未安装 Matplotlib&#xff0c;请先安装 # pip instal…

DHCP配置实验

实验拓扑图 首先配置server的IP地址和网关 接下来配置R1 undo info-center enable dhcp enable //开启DHCP服务 ip pool dhcp-pool1 //开始配置dhcp地址池 gateway-list 192.168.1.254 //配置网关 network 192.168.1.0 mask 255.255.255.0 //配置网段和子网掩码 dns-list …

Linux:ELF文件-静动态库原理

✨✨所属专栏&#xff1a;Linux✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ ELF文件 什么是编译&#xff1f;编译就是将程序源代码编译成能让CPU直接执行的机器代码 如果我们要编译一个 .c文件&#xff0c;使用gcc -c将.c文件编译为二进制文件.o &#xff0c;如果一个项目有多个.…

Towards Graph Foundation Models: A Survey and Beyond

Towards Graph Foundation Models: A Survey and Beyond WWW24 ​#paper/⭐⭐⭐#​ #paper/&#x1f4a1;#​ 背景和动机 背景与意义 随着基础模型&#xff08;如大语言模型&#xff09;在NLP等领域的突破&#xff0c;图机器学习正经历从浅层方法向深度学习的范式转变。GFM…

基于 Python 深度学习的电影评论情感分析可视化系统(2.0 全新升级)

基于 Python 深度学习的电影评论情感分析可视化系统&#xff0c;基于 Flask 深度学习&#xff0c;构建了一个 影评情感分析系统&#xff0c;能够 自动分析影评、计算情感趋势 并 可视化展示&#xff0c;对于电影行业具有重要参考价值&#xff01; 基于 Python 深度学习的电影评…

Cargo, the Rust package manager, is not installed or is not on PATH.

今天在Windows操作系统上通过pip 安装jupyter的时候遇到这个报错&#xff0c;Cargo, the Rust package manager, is not installed or is not on PATH.。 解决办法 官网&#xff1a;https://rustup.rs/# 下载&#xff1a;https://win.rustup.rs/x86_64 安装完成之后&#xff0c…

CSS—text文本、font字体、列表list、表格table、表单input、下拉菜单select

目录 1.文本 2.字体 3.列表list a.无序列表 b.有序列表 c.定义列表 4.表格table a.内容 b.合并单元格 3.表单input a.input标签 b.单选框 c.上传文件 4.下拉菜单 1.文本 属性描述color设置文本颜色。direction指定文本的方向 / 书写方向。letter-spacing设置字符…

开启AI短剧新纪元!SkyReels-V1/A1双剑合璧!昆仑万维开源首个面向AI短剧的视频生成模型

论文链接&#xff1a;https://arxiv.org/abs/2502.10841 项目链接&#xff1a;https://skyworkai.github.io/skyreels-a1.github.io/ Demo链接&#xff1a;https://www.skyreels.ai/ 开源地址&#xff1a;https://github.com/SkyworkAI/SkyReels-A1 https://github.com/Skywork…

数学建模:MATLAB极限学习机解决回归问题

一、简述 极限学习机是一种用于训练单隐层前馈神经网络的算法&#xff0c;由输入层、隐藏层、输出层组成。 基本原理&#xff1a; 输入层接受传入的样本数据。 在训练过程中随机生成从输入层到隐藏层的所有连接权重以及每个隐藏层神经元的偏置值&#xff0c;这些参数在整个…

【计算机网络入门】初学计算机网络(七)

目录 1. 滑动窗口机制 2. 停止等待协议&#xff08;S-W&#xff09; 2.1 滑动窗口机制 2.2 确认机制 2.3 重传机制 2.4 为什么要给帧编号 3. 后退N帧协议&#xff08;GBN&#xff09; 3.1 滑动窗口机制 3.2 确认机制 3.3 重传机制 4. 选择重传协议&#xff08;SR&a…

《Python实战进阶》No 8:部署 Flask/Django 应用到云平台(以Aliyun为例)

第8集&#xff1a;部署 Flask/Django 应用到云平台&#xff08;以Aliyun为例&#xff09; 2025年3月1日更新 增加了 Ubuntu服务器安装Python详细教程链接。 引言 在现代 Web 开发中&#xff0c;开发一个功能强大的应用只是第一步。为了让用户能够访问你的应用&#xff0c;你需…

GitLab Pages 托管静态网站

文章目录 新建项目配置博客添加 .gitlab-ci.yml其他配置 曾经用 Github Pages 来托管博客内容&#xff0c;但是有一些不足&#xff1a; 在不科学上网的情况下&#xff0c;是没法访问的&#xff0c;或者访问速度非常慢代码仓库必须是公开的&#xff0c;如果设置为私有&#xff0…

TVbox蜂蜜影视:智能电视观影新选择,简洁界面与强大功能兼具

蜂蜜影视是一款基于猫影视开源项目 CatVodTVJarLoader 开发的智能电视软件&#xff0c;专为追求简洁与高效观影体验的用户设计。该软件从零开始编写&#xff0c;界面清爽&#xff0c;操作流畅&#xff0c;特别适合在智能电视上使用。其最大的亮点在于能够自动跳过失效的播放地址…