前言

  • 用java将文件夹压缩成zip包,像压缩软件一样,按照目录结构压缩(包含当前文件夹)
  • 网上没有找到太合适的,借鉴其它帖子,自己写了一个

代码

package xin.yangshuai.mybatisgeneratorweb.util;import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;/*** ZipUtils** @author shuai* @date 2021/7/30*/
public class ZipUtils {public static void main(String[] args) throws Exception {File sourceFile = new File("D:/test/testFile");fileToZip(sourceFile);}/*** sourceFile一定要是文件夹* 默认会在同目录下生成zip文件** @param sourceFilePath* @throws Exception*/public static void fileToZip(String sourceFilePath) throws Exception {fileToZip(new File(sourceFilePath));}/*** sourceFile一定要是文件夹* 默认会在同目录下生成zip文件** @param sourceFile* @throws Exception*/public static void fileToZip(File sourceFile) throws Exception {if (!sourceFile.exists()) {throw new RuntimeException("不存在");}if (!sourceFile.isDirectory()) {throw new RuntimeException("不是文件夹");}//zip文件生成位置File zipFile = new File(sourceFile.getAbsolutePath() + ".zip");FileOutputStream fos = new FileOutputStream(zipFile);ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(fos));fileToZip(zos, sourceFile, "");zos.close();fos.close();}private static void fileToZip(ZipOutputStream zos, File sourceFile, String path) throws Exception {System.out.println(sourceFile.getAbsolutePath());//如果是文件夹只创建zip实体即可,如果是文件,创建zip实体后还要读取文件内容并写入if (sourceFile.isDirectory()) {path = path + sourceFile.getName() + "/";ZipEntry zipEntry = new ZipEntry(path);zos.putNextEntry(zipEntry);for (File file : sourceFile.listFiles()) {fileToZip(zos, file, path);}} else {//创建ZIP实体,并添加进压缩包ZipEntry zipEntry = new ZipEntry(path + sourceFile.getName());zos.putNextEntry(zipEntry);byte[] bufs = new byte[1024 * 10];//读取待压缩的文件并写进压缩包里FileInputStream fis = new FileInputStream(sourceFile);BufferedInputStream bis = new BufferedInputStream(fis, 1024 * 10);int read = 0;while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) {zos.write(bufs, 0, read);}bis.close();fis.close();}}
}

java将文件夹压缩成zip java按照目录结构压缩文件夹相关推荐

  1. java 文件夹打包成zip(带有嵌套的那种文件夹)

    文件夹中还嵌套有其他的文件夹或者文件 要进行压缩成zip 代码参考如下: public void zipFile() throws IOException {String sourceFile = & ...

  2. Java实现将文件或者文件夹压缩成zip

    Java实现将文件或者文件夹压缩成zip 最近碰到个需要下载zip压缩包的需求,于是我在网上找了下别人写好的zip工具类.但找了好多篇博客,总是发现有bug.因此就自己来写了个工具类. 这个工具类的功 ...

  3. java压缩zip文件夹错误_Java将文件或者文件夹压缩成zip(修复文件夹中存在多个文件报Stream Closed错误问题)...

    项目场景: Java将文件或者文件夹压缩成zip(修复文件夹中存在多个文件报Stream Closed错误问题) 问题描述: 最近的项目需要将多级文件夹压缩成zip,网上找了几个工具类,都会报错,所以 ...

  4. Java将网络图片下载至文件夹,然后将文件夹压缩成zip

    思路: 第一步.创建一个文件夹A,用来存图片 第二步.将图片转为图片流写入文件夹A 第三步.将文件夹压缩成ZIP 下面上代码 public class FileZipUtils {public sta ...

  5. Java将指定文件/文件夹压缩成zip、rar压缩文件

    import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream;import java.io.*; ...

  6. java 把文件打包成zip文件_java将文件或是文件夹打包压缩成zip格式

    导读热词 下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. import java.io.BufferedInputStream; impo ...

  7. java 把文件压缩成zip文件

    ackage org.fh.util;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStr ...

  8. java批量文件打包成压缩成zip下载和大量数据导出excel时的处理方法

    对于我们来说,java导出数据成excel或其他数据文件,或者下载资源是开发中的家常便饭, 但是在导出的时候,如果点击一个按钮导出几百万条数据,如果不作处理的话很可能会出现一系列的问题. 这里介绍打包 ...

  9. java zip压缩 加密码_java 压缩成zip文件、解压zip文件(可设置密码)

    1.情景展示 java实现将文件夹进行压缩打包的功能及在线解压功能 2.解决方案 方式一:压缩.解压zip 准备工作:slf4j-api.jar org.slf4j slf4j-api 1.7.25 ...

最新文章

  1. (十)mybatis之配置(mybatis-config.xml)
  2. Idea-LifecycleException when deploying
  3. centos7 django mysql_CentOS7操作系统下快速安装MySQL5.7
  4. VC实现表单提交并设置获取COOKIE:
  5. 如何使用JavaScript获取客户端的IP地址?
  6. 用POP动画编写带富文本的自定义动画效果
  7. Eratosthenes筛法
  8. 作业帮冯雪胡不归问题_作业帮学习平台微信服务号关注
  9. linux系统重装win系统教程,Win10如何重装linux系统 Win10重装linux系统教程
  10. 读书笔记——《一个人的朝圣》
  11. 钟表维修管理系统技术解析(六) 录入保修单
  12. 2019_WWW_Graph Neural Networks for Social Recommendation
  13. 京东常用的API接口
  14. 国外服务器被攻击以及应对方法
  15. 平方度用计算机打出来,角度计算器-角度计算器
  16. 泛娱乐 | 2020人才市场洞察及薪酬指南
  17. 开启关闭oracle数据库,手动开启/关闭Oracle数据库
  18. GEE 提取长系列NDVI像元值
  19. Map根据Key值进行排序(升序加降序)
  20. GNURadio 3.9 使用 OOT 自定义模块问题记录

热门文章

  1. macbook pro适合python编程么_编程应该选macbook pro还是thinkpad T(从性能角度出发)?...
  2. python 经纬度批量逆向定位地址县市等信息
  3. Flink-电商用户行为分析(网站总浏览量(PV)的统计)
  4. Haproxy 代理后端服务
  5. 爬取微信还有朋友圈数据
  6. 华为Mate40、华为Mate40Pro、华为Mate40Pro+和华为Mate40RS保时捷值得买吗
  7. Ubutu16.04 环境下添加打印机,安装Brother兄弟打印机驱动
  8. 风柔月清,吾爱在浅秋
  9. “undefined reference to“ 问题解决方法
  10. ARP欺骗原理及实现