失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java压缩文件夹递归实现将多个文件夹压缩在同一个zip包

java压缩文件夹递归实现将多个文件夹压缩在同一个zip包

时间:2022-03-09 13:34:18

相关推荐

java压缩文件夹递归实现将多个文件夹压缩在同一个zip包

该方法递归实现将多个文件夹压缩在同一个zip包中 然后删除文件夹directoryName 下需要被压缩的文件。

package com.chuangqi.tools;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;/*** \* Created with IntelliJ IDEA.* \* @author: xiyue* \* Date: /6/3* \* Time: 14:53* \* To change this template use File | Settings | File Templates.* \* Description:* \*/public class ZipUtils {public static void zipDir(String directoryName, ZipOutputStream zos, String basePath) {/*** 该方法递归实现将多个文件夹压缩在同一个zip包中 然后删除文件夹directoryName 下需要被压缩的文件。* @param directoryName 文件夹路径* @param zos 压缩流 ZipOutputStream 确定压缩包生成的位置* @param basePath用于传给 ZipEntry 用于压缩包分文件夹第一级传入可以为""* @throws IOException*/File file = new File(directoryName);// 每一级别的递归 basePath 不应该被改变所以添加一个 参数 copyBasePathString copyBasePath ="";if (file.exists()) {File[] fileList = file.listFiles();for (File f : fileList) {if (f.isDirectory()) {// 拼接文件夹目录if (!"".equals(basePath)) {copyBasePath = basePath+ File.separator+f.getName();} else {copyBasePath = f.getName();}// 继续递归文件夹zipDir(directoryName + File.separator + f.getName(), zos, copyBasePath);//这里是生成空文件夹,加个斜杠/就行了try {zos.putNextEntry(new ZipEntry(copyBasePath+"/"));} catch (IOException e) {e.printStackTrace();}try {zos.closeEntry();} catch (IOException e) {e.printStackTrace();}} else {// 压缩单个文件到 zosString zipName;if (!"".equals(basePath)) {zipName = basePath + File.separator + f.getName();} else {zipName = f.getName();}try {// zos.putNextEntry 开始添加压缩文件 ZipEntry传入的参数 zipName如果包含了层级关系就会生成文件夹zos.putNextEntry(new ZipEntry(zipName));int len;FileInputStream is = new FileInputStream(f);byte[] bytes = new byte[1024];while ((len = is.read(bytes)) != -1) {zos.write(bytes, 0, len);}zos.flush();// zos.closeEntry() 结束当前压缩文件的添加zos.closeEntry();is.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}}}}

如果觉得《java压缩文件夹递归实现将多个文件夹压缩在同一个zip包》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。