批量导出pdf为zip文件(可以修改zip中pdf名称)

核心代码

  public static void compressZip1(HashMap<String,File> map, String rootPath, String zipFileName) throws FileNotFoundException {FileOutputStream fileOutputStream = new FileOutputStream(zipFileName);ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(rootPath));try {for (Map.Entry<String, File> entry : map.entrySet()) {String fileName = entry.getKey(); // 获取文件名File file = entry.getValue(); // 获取文件FileInputStream fileInputStream = new FileInputStream(file);zip1(fileInputStream, zipOutputStream, fileName, file);fileInputStream.close();}zipOutputStream.close();fileOutputStream.close();} catch (IOException e) {log.error("context", e);}finally {try {zipOutputStream.close();fileOutputStream.close();} catch (IOException e) {log.error("context", e);}}}private static void zip1(FileInputStream fileInputStream,ZipOutputStream zipOutputStream,  String fileName, File file) throws IOException {// 设置自定义pdf文件名String newFileName = fileName + file.getName();ZipEntry zipEntry = new ZipEntry(newFileName);zipOutputStream.putNextEntry(zipEntry);byte[] buffer = new byte[1024*5];BufferedInputStream bufferStream  = new BufferedInputStream(fileInputStream);int length;// 输入缓冲流int read = 0;
//        while ((length = fileInputStream.read(buffer)) > 0) {while ((read = bufferStream.read(buffer)) != -1) {zipOutputStream.write(buffer, 0, read);}zipOutputStream.closeEntry();bufferStream.close();}

注意!!!

这里需要使用BufferedInputStream,如果用的是FileInputStream 就算flush有时候还是会文件损坏,我没再深点测试这个为啥得BufferedInputStream

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

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

相关文章

Java超级玛丽小游戏制作过程讲解 第四天 创建并完成常量类03

今天继续来完成常量类。 package com.sxt;import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List;public class StaticValue {//背景public static Buff…

【Docker】性能测试监控平台搭建:InfluxDB+Grafana+Jmeter+cAdvisor

前言 在做性能测试时&#xff0c;如果有一个性能测试结果实时展示的页面&#xff0c;可以极大的提高我们对系统性能表现的掌握程度&#xff0c;进而提高我们的测试效率。但是我们每次打开Jmeter都会有几个硕大的字提示别用GUI模式进行负载测试&#xff0c;而且它自带的监视器效…

系统架构设计师-软件架构设计(7)

目录 大型网站系统架构演化 一、第一阶段&#xff1a;单体架构 到 第二阶段&#xff1a;垂直架构 二、第三阶段&#xff1a;使用缓存改善网站性能 1、缓存与数据库的数据一致性问题 2、缓存技术对比【MemCache与Redis】 3、Redis分布式存储方案 4、Redis集群切片的常见方式 …

FFmpeg中相关结构体介绍

AVFormatContext&#xff1a;此结构体存储音视频封装格式中包含的信息&#xff0c;并且这个结构体是贯穿整个播放流程的。在这个结构体中主要包含AVInputFormat&#xff0c;AVOutputFormat、AVStream等。 struct AVInputFormat *iformat; // 输入数据的封装格式 AVIOContext *…

PostGIS v3.4.0Orc1版本特性

PostGIS 3.4.0rc1 2023/08/05自 3.4.0beta2 发布以来的变化- &#xff03;5442&#xff0c;[postgis_tiger_geocoder&#xff0c;postgis_topology]数据库search_path不做它打算做什么&#xff08;Jelte Fennema&#xff09;PostGIS 3.4.0beta2 2023/07/29自 3.4.0beta1 发布以…

解决log4j.xml的url没有注册问题

在对log4j.xml配置文件配置时出现http//jakarta.apache.org/log4j/爆红&#xff0c;IDEA提示uri is not registered。源代码如下 <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j"http://jakarta.apache.org/lo…

c++ boost circular_buffer

boost库中的 circular_buffer顾名思义是一个循环缓冲器&#xff0c;其 capcity是固定的当容量满了以后&#xff0c;插入一个元素时&#xff0c;会在容器的开头或结尾处删除一个元素。 circular_buffer为了效率考虑&#xff0c;使用了连续内存块保存元素 使用固定内存&#x…

Spring DBCP配置

Spring DBCP配置 BasicDataSource对应的依赖&#xff1a; <dependency><groupId>org.apache.commons</groupId><artifactId>commons-dbcp2</artifactId><version>2.5.0</version></dependency><dependency><groupId…

为什么要选择文件传输软件?有哪些最佳高速文件传输软件?

是否经历过这样的场景&#xff0c;正在努力地完成工作任务&#xff0c;但是由于制作的数据无法及时传送给合作伙伴&#xff0c;工作流程被打断了&#xff1f;这听起来很令人沮丧&#xff0c;对吧&#xff1f;可是&#xff0c;这种情况在现实中并不罕见。 因此&#xff0c;需要…

OpenCv.js(图像处理)学习历程

opencv.js官网 4.5.0文档 以下内容整理于opencv.js官网。 简介 OpenCV由Gary Bradski于1999年在英特尔创建。第一次发行是在2000年。OpenCV支持c、Python、Java等多种编程语言&#xff0c;支持Windows、Linux、Os X、Android、iOS等平台。基于CUDA和OpenCL的高速GPU操作接口也…

java泛型和通配符的使用

泛型机制 本质是参数化类型(与方法的形式参数比较&#xff0c;方法是参数化对象)。 优势:将类型检查由运行期提前到编译期。减少了很多错误。 泛型是jdk5.0的新特性。 集合中使用泛型 总结&#xff1a; ① 集合接口或集合类在jdk5.0时都修改为带泛型的结构② 在实例化集合类时…

Unity数字可视化学校_昼夜(三)

1、删除不需要的 UI using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class EnvControl : MonoBehaviour {//UIprivate Button btnTime;private Text txtTime; //材质public List<Material> matListnew Li…

docker中的jenkins去配置sonarQube

docker中的jenkins去配置sonarQube 1、拉取sonarQube macdeMacBook-Pro:~ mac$ docker pull sonarqube:8.9.6-community 8.9.6-community: Pulling from library/sonarqube 8572bc8fb8a3: Pull complete 702f1610d53e: Pull complete 8c951e69c28d: Pull complete f95e4f8…

C++解决TCP粘包

目录 TCP粘包问题TCP客户端TCP服务端源码测试 TCP粘包问题 TCP是面向连接的&#xff0c;面向流的可靠性传输。TCP会将多个间隔较小且数据量小的数据&#xff0c;合并成一个大的数据块&#xff0c;然后进行封包发送&#xff0c;这样一个数据包里就可能含有多个消息的数据&#…

mysql 拼接字符串,截取字符串 常用方式

1&#xff0c;拼接字符串常用&#xff1a;CONCAT(‘需要拼接的字符串’,列名) select a.UserState,a.OrgUserId,a.UserName, CONCAT(,b.Telephone),b.AreaCode from T_UserInfo b inner join T_User a on a .UserIdb.UserId and a.UserName!admin and a.UserState!Resigned…

02-状态模式

1 意图 允许一个对象在其内部状态改变时改变它的行为&#xff0c;对象看起来似乎修改了它的类。&#xff08;这里的对象指的就是模型中的Context&#xff0c;行为指的就是State的子类&#xff09; 2 动机 考虑一个问题&#xff1a;实现一个表示网络连接的类TCPConnection&am…

Java课设--学生信息管理系统(例2)

文章目录 前提一、运行效果二、代码获取 前言 首先确定自己的JDBC连接数据库已经完成&#xff0c;不懂可以看看其他博主的解析。 我使用的是SQL Server数据库&#xff0c;数据库名称为stu,账号为sa,密码为123456 数据库的表为student表&#xff0c;内容如下&#xff1a; 一、…

Linux 信号signal处理机制

Signal机制在Linux中是一个非常常用的进程间通信机制&#xff0c;很多人在使用的时候不会考虑该机制是具体如何实现的。signal机制可以被理解成进程的软中断&#xff0c;因此&#xff0c;在实时性方面还是相对比较高的。Linux中signal机制的模型可以采用下图进行描述。 每个进程…

Selenium自动化测试框架的搭建

说 起自动化测试&#xff0c;我想大家都会有个疑问&#xff0c;要不要做自动化测试&#xff1f; 自动化测试给我们带来的收益是否会超出在建设时所投入的成本&#xff0c;这个嘛别说是我&#xff0c;即便是高手也很难回答&#xff0c;自动化测试的初衷是美好的&#xff0c;而测…

.gitkeep介绍

最近在nand flash上创建可读写分区的时候涉及到了.gitkeep&#xff0c;了解了一下。 .gitkeep 文件的作用 .gitkeep 这个文件并不是一个多么复杂 &#xff0c;相反&#xff0c;它的意图&#xff0c;或者说作用&#xff0c;其实非常简单&#xff01;就是—使 Git 保留一个空文…