java 文件/文件夹复制,添加压缩zip

复制文件夹,并压缩成zip

需求:创建A文件夹,把B文件夹复制到A文件夹。然后把A文件夹压缩成zip包

 public static void main(String[] args) throws Exception {try {String A = "D:\\dev\\program";String B = "D:\\program";// 创建临时文件夹File tempDir = new File(A);tempDir.mkdir();// 把B文件夹复制到A文件夹File sourceDir = new File(B);File destinationDir = new File(tempDir, "");copyDirectory(sourceDir, destinationDir);//把A文件夹压缩成zip包String AZIP = A + ".zip";zipFolder(A, AZIP);// 删除临时文件夹FileUtils.deleteDirectory(tempDir);} catch (Exception e) {e.printStackTrace();}}/*** 复制文件夹** @param source      复制后文件夹路径* @param destination 原文件夹路径* @throws IOException*/private static void copyDirectory(File source, File destination) throws IOException {File[] files = source.listFiles();for (File file : files) {if (file.isDirectory()) {copyDirectory(file, new File(destination, file.getName()));} else {if (!destination.exists()) {destination.mkdirs();}File copy = new File(destination, file.getName());copy.createNewFile();FileInputStream in = new FileInputStream(file);FileOutputStream out = new FileOutputStream(copy);byte[] buffer = new byte[1024];int length;while ((length = in.read(buffer)) > 0) {out.write(buffer, 0, length);}in.close();out.close();}}}/*** 压缩文件** @param path    需要压缩的文件路径* @param zipPath 压缩的文件后路径* @throws Exception*/public static void zipFolder(String path, String zipPath) throws Exception {FileOutputStream fos = null;ZipOutputStream zos = null;try {fos = new FileOutputStream(zipPath);zos = new ZipOutputStream(fos);addFolderToZip("", new File(path), zos);} finally {if (zos != null) {zos.close();}if (fos != null) {fos.close();}}}/*** 秭归添加压缩路径*/private static void addFolderToZip(String parentPath, File folder, ZipOutputStream zos) throws Exception {for (File file : folder.listFiles()) {if (file.isDirectory()) {addFolderToZip(parentPath + folder.getName() + "/", file, zos);} else {FileInputStream fis = null;try {fis = new FileInputStream(file);ZipEntry zipEntry = new ZipEntry(parentPath + folder.getName() + "/" + file.getName());zos.putNextEntry(zipEntry);byte[] bytes = new byte[1024];int length;while ((length = fis.read(bytes)) >= 0) {zos.write(bytes, 0, length);}} finally {if (fis != null) {fis.close();}}}}}

在这里插入图片描述

在这里插入图片描述

没了。谢谢

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

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

相关文章

C++之红黑树剖析

博主:拖拉机厂第一代码手 gitee:拖拉机厂第一代码手 已收录到专栏C,点击访问 目录 💴红黑树简介💵红黑树的插入操作💶红黑树的删除操作💷红黑树的实现💸红黑树节点的定义💸红黑树结构…

JMeter 查看 TPS 数据,详细指南

TPS 是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。在 JMeter 中,我们可以使用以下方法查看 T…

6.s081/6.1810(Fall 2022)Lab5: Copy-on-Write Fork for xv6

前言 本来往年这里还有个Lazy Allocation的,今年不知道为啥直接给跳过去了。. 其他篇章 环境搭建 Lab1: Utilities Lab2: System calls Lab3: Page tables Lab4: Traps Lab5: Copy-on-Write Fork for xv6 参考链接 官网链接 xv6手册链接,这个挺重要…

苍穹外卖day11笔记

今日首先介绍前端技术Apache ECharts,说明后端需要准备的数据,然后讲解具体统计功能的实现,包括营业额统计、用户统计、订单统计、销量排名。 一、ECharts 是什么 ECharts是一款基于 Javascript 的数据可视化图表库。我们用它来展示图表数…

python3.6 安装pillow失败

问题描述 python3 安装 pillow 失败 错误原因 python3.6 不支持 pillow9.0 以上的版本 解决方法: 指定版本安装 e.g., pillow8.0 pip3 install pillow8.0

每日一学——OSI参考模型

OSI参考模型(Open Systems Interconnection Reference Model)是国际标准化组织(ISO)制定的一个网络通信协议的概念框架。它将网络通信划分为七个层次,每个层次负责不同的功能和任务,从物理层到应用层依次为…

python自动化:系统凭据的获取与添加

在自动化流程开发中,我们经常会遇到输入帐号、密码的情况,帐号明文还可以,但是密码不想展示给他人,但是不想自己去手动输入怎么办? 基于以上情况我们可以使用windows自带的凭据管理器进行密码存储,其实我们…

SSH无法连接kali,拒绝密码

1,cd /etc/ssh 2,systemctl start ssh.server 3,vim /etc/ssh/sshd_config 将黄色文字改成这样 4,systemctl restart ssh 然后去连接就好了

Jpa与Druid线程池及Spring Boot整合(二): spring-boot-starter-data-jpa 踏坑异常处理方案

Jpa与Druid线程池及Spring Boot整合(一) Jpa与Druid线程池及Spring Boot整合(二):几个坑 附录官网文档:core.domain-events域事件 从聚合根发布事件 存储库管理的实体是聚合根。在领域驱动设计应用程序中,这些聚合根通常会发布领域事件。Sp…

CTFSHOW php命令执行

目录 web29 过滤flag web30 过滤system php web31 过滤 cat|sort|shell|\. 这里有一个新姿势 可以学习一下 web32 过滤 ; . web33 web34 web35 web36 web37 data伪协议 web38 短开表达式 web39 web40 __FILE__命令的扩展 web41 web42 重定向…

git一次错误merge的回滚

场景:提交到sit的代码,结果解决冲突merge了DEV的代码,所以要回滚到合并之前的代码 (原因是我再网页上处理了冲突,他就自动merge了,如图—所以还是idea处理冲突,可控) 方式二: &…