java实现多文件压缩zip

news2024/10/4 19:24:02

1,需求

需求要求实现多个文件压缩为zip文件

2,代码

package com.example.demo;

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZIP {

    public static void compressFiles(String zipPathDir, String zipFileName, List<String> fileList)  throws  Exception{
            ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(new File(zipPathDir + zipFileName)));
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(zos));
            File zipFile = new File(zipPathDir);
            if (!zipFile.exists()) {
                zipFile.mkdirs();
            }
            for (String filePath : fileList) {
                File file = new File(filePath);
                if (file.exists()) {
                    ZipEntry zipEntry = new ZipEntry(file.getName());
                    zos.putNextEntry(zipEntry);
                    Path path = Paths.get(filePath);
                    BufferedReader reader = new BufferedReader(new InputStreamReader(Files.newInputStream(path)));
                    while (reader.ready()) {
                        writer.write(reader.readLine());
                    }
                    writer.flush();
                    reader.close();
                    zos.closeEntry();
                }else{
                    //文件路径异常filePath:filePath
                }
            }
            zos.flush();
            writer.close();
    }

    public static void main(String[] args) throws  Exception{
        String zipPathDir ="D://test/";
        String zipFileName ="test.zip";
        List<String> fileList = new ArrayList<>();
        fileList.add("D://test/file.csv");
        fileList.add("D://test/1.txt");
        fileList.add("D://test/HelloWorld.txt");
        compressFiles( zipPathDir,  zipFileName,  fileList);
    }

}

3,测试图例

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

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

相关文章

【宝藏系列】一文带你了解STM32内置的硬件功能安全属性

【宝藏系列】一文带你了解STM32内置的硬件功能安全属性 文章目录 【宝藏系列】一文带你了解STM32内置的硬件功能安全属性&#x1f468;‍&#x1f3eb;概览1️⃣双看门狗&#xff1a;独立看门狗和窗口看门狗2️⃣电源监测3️⃣时钟安全系统CSS4️⃣SRAM奇偶校验位5️⃣硬件ECC6…

【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之数码管动态显示(五)

本原创教程由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处 适用于板卡型号&#xff1a; 紫光同创PGL22G开发平台&#xff08;盘古22K&#xff09; 一&#xff1a;盘古22K开发板&#xff08;紫光同创PGL22G开发…

口碑最好的洗拖一体机 大面积洗地机十大排名

口碑最好的洗拖一体机 大面积洗地机十大排名 口碑最好的洗拖一体机&#xff0c;是现代家庭清洁的必备神器。它不仅能快速高效地清洁地面&#xff0c;还能省时省力&#xff0c;完成一些繁琐的家务活。那么&#xff0c;当我们面对市面上琳琅满目的洗地机品牌时&#xff0c;该如何…

Qt/C++编写视频监控系统81-Onvif报警抓图和录像并回放

一、前言 视频监控系统中的图文警情模块&#xff0c;是通过Onvif协议的事件订阅拿到的&#xff0c;通过事件订阅后&#xff0c;设备的各种报警事件比如入侵报警/遮挡报警/越界报警/开关量报警等&#xff0c;触发后都会主动往订阅者发送&#xff0c;而且一般都是会发送两次&…

idea创建同名模块问题:模块变为灰色不可用,模块已经存在

1. 问题1&#xff1a;同名模块变为灰色 idea创建一个模块&#xff0c;由于创建过程哪一步错误了&#xff0c;此时再次创建同名的模块&#xff0c;发现模块变为灰色&#xff1a;原因是创建同名的模块会被忽略掉&#xff0c;不可用。 删除模块 再次创建同名模块&#xff1a;变…

如何在 iPhone 上检索已删除的短信

我厌倦了垃圾短信。当我例行公事地删除 iPhone 上的这些不需要的消息时&#xff0c;当我分散注意力时&#xff0c;我通过点击错误的按钮清除了所有消息。这些被删除的消息中包含两条团购验证信息。有什么办法可以从 iPhone 检索我的消息吗&#xff1f; 有时我们可能会不小心删…

TypeScript_算法复杂度-哈希表

算法复杂度 对于同一个问题&#xff0c;我们往往其实有很多种解决它的思路和方法&#xff0c;也就是可以采用不同的算法 但是不同的算法&#xff0c;其实效率是不一样的 举个例子&#xff08;现实的例子&#xff09;:在一个庞大的图书馆中&#xff0c;我们需要找一本书。在图…

axis tstrb tkeep

AXI 协议支持地址非对齐的传输&#xff0c;允许突发传输的首字节地址&#xff0c;即起始地址与突发传输位宽不对齐。举个例子&#xff0c;总线位宽为 32bit 时&#xff0c;如果起始地址为 0x1002 &#xff0c;则产生了非对齐现象。与 32bit 位宽总线对齐的地址需要能被 4 整除&…

springboot3.1.3和mybatis-plus3.5和最新代码生成器实践

spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/数据库名?useUnicodetrue&characterEncodingutf-8&autoReconnecttrue&useSSLfalse&serverTimezoneUTCusername: rootpassword: 123456mybatis-plus:# xml地址ma…

c++搜索剪枝常见方法与技巧

目录 搜索剪枝常见方法与技巧 关键字 搜索方法,剪枝 摘要 正文 小结 程序 参考书目 搜索剪枝常见方法与技巧 关键字 搜索方法,剪枝 摘要 搜索是计算机解题中常用的方法&#xff0c;它实质上是枚举法的应用。由于它相当于枚举法&#xff0c;所以其效率是相当地的。因此…

冠达管理 :主升浪前最后一次洗盘?

随着科技的不断发展&#xff0c;人们关于金融商场的了解也越来越深入。在股市中&#xff0c;洗盘是一个非常重要的概念。洗盘是指许多的股票被清洗出某个价位上的持有者&#xff0c;从而拉低该价位上的股票价格&#xff0c;为后续上涨做出铺垫。而在股市中&#xff0c;主升浪前…

DolphinDB 携手白鲸开源 WhaleStudio 打造高效敏捷的 DataOps 解决方案

浙江智臾科技有限公司&#xff08;简称&#xff1a;DolphinDB&#xff09;和北京白鲸开源科技有限公司&#xff08;简称&#xff1a;白鲸开源&#xff09;是在大数据技术领域活跃的两支专业团队。 DolphinDB 专注于为用户提供集高性能存储、复杂分析能力和流处理于一体的实时计…

SUB-1G无线收发芯片DP4306低功耗的单片集成收发机

概述 DP4306是一款高性能低功耗的单片集成收发机&#xff0c;工作频率可覆盖200MHz~ 1000MHz, 芯片集成了射频接收器、射频发射器、频率综合器、GFSK调制器、GFSK 解调器等功能模块。通过SPI接口可以对输出功率、频道选择以及数据包格式进行灵活配置&#xff0c;并且内置CRC、…

如何为新产品做好全网口碑推广?

互联网时代下&#xff0c;产品上市后的口碑营销直接关系到产品的销售量。不管是网购还是线下购物&#xff0c;消费者喜欢通过互联网去查询产品的网络口碑&#xff0c;如果产品评价不好可能不断丢失客户。新产品推出之后做好全网口碑推广&#xff0c;为新品的销售做好铺垫已经成…

MySQL 8 数据清洗总结

MySQL 8 数据清洗三要素&#xff1a; 库表拷贝和数据备份数据清洗SQL数据清洗必杀技-存储过程 前提&#xff1a;数据库关联库表初始化和基础数据初始化&#xff1a; -- usc.t_project definitionCREATE TABLE t_project (id varchar(64) NOT NULL COMMENT 主键,tid varchar(…

Scrum Master 面试问题- ChatGPT 版

之前&#xff0c;我测试了 ChatGPT 如何回答《Scrum Master 面试指南》中的问题&#xff1b;见下文。早在2023 年 1 月&#xff0c;我就不会在 Scrum Master 面试过程中采取下一步&#xff0c;邀请ChatGPT与几名Scrum团队成员进行全方位的面试。 那么&#xff0c;如果 GPT 3.5…

JavaScript(函数,作用域和闭包)

目录 一&#xff0c;什么是函数1.1&#xff0c;常用系统函数1.2&#xff0c;函数声明 1.3&#xff0c;函数表达式二&#xff0c;预解析2.1&#xff0c;函数自调用 2.2&#xff0c;回调函数三&#xff0c;变量的作用域3.1&#xff0c;隐式全局变量 四&#xff0c;作用域与块级作…

如何从0跑起Vue3项目(Node和npm环境配置)

文章目录 vue项目运行Node安装打开vue项目 vue项目 拥有了一个vue3项目后怎么将它跑起来&#xff1f; 期末在学长敲代码那儿做的vue课设&#xff0c;怎么将他从0跑起来&#xff1f; char[] str "如果需要做课设的小伙伴&#xff0c;也可以百度:学长敲代码" strin…

el-switch组件在分页情况下的使用

1.需求: 系统使用者在点击发布状态的开关后,可以对应的发布或者取消发布试卷 2.前端代码: html代码(这里不贴其他表单项的代码了,直接贴el-Switch组件的代码): <!-- qwy: 使用Switch组件,设置发布状态,业务逻辑:在页面初始渲染的时候应该查询发布状态,以根据状…

windows环境装MailHog

背景&#xff1a;win10系统&#xff0c;windows 宝塔&#xff0c;laravel 项目&#xff0c;邮件相关需要装一个MailHog 下载地址&#xff1a;https://sourceforge.net/projects/mailhog.mirror/ 直接下载&#xff0c;下载后双击运行就可以了&#xff0c;系统可能提示”不信任“…