简单的文件夹压缩ZIP文件

这篇具有很好参考价值的文章主要介绍了简单的文件夹压缩ZIP文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.压缩文件夹,生产zip压缩文件

/**
 * 生成zip文件
 * @param folderPath 文件夹路径
 * @param targetFile 文件夹名
 */
public  boolean  createZip(String folderPath,String targetFile){
		//要压缩的文件夹路径
		String folderToCompress = folderPath+targetFile;
		//生成的zip文件路径
		String zipFileName = folderToCompress+".zip";
		//文件名称
		String folderName = targetFile;
		try (ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipFileName))) {
			// 压缩文件夹
			ZipPoi.compressFolder(folderToCompress, folderName, zipOutputStream);
			System.out.println("Folder compressed successfully!");
		} catch (IOException e) {
			e.printStackTrace();
			log.error(e.getMessage());
			return false;
		}
		return true;
	}

所用到的公共类

/**
 *	公共类
 * @author guanc
 * @ClassName ZipPoi
 * @date 2023年08月27日
 * @version: 1.0
 */
public class ZipPoi {
    /**
     * 压缩文件夹
     * @param sourceFolder 要压缩的文件夹路径  如要压缩windos文件夹 则路径为  E:\opt\dag\client\windows
     * @param folderName  文件名称 windows.zip
     * @param zipOutputStream
     * @throws IOException
     */
    public static void compressFolder(String sourceFolder, String folderName, ZipOutputStream zipOutputStream) throws IOException {
        File folder = new File(sourceFolder);
        File[] files = folder.listFiles();

        if (files != null) {
            for (File file : files) {
                if (file.isDirectory()) {
                    // 压缩子文件夹
                    compressFolder(file.getAbsolutePath(), folderName + "/" + file.getName(), zipOutputStream);
                } else {
                    // 压缩文件
                    addToZipFile(folderName + "/" + file.getName(), file.getAbsolutePath(), zipOutputStream);
                }
            }
        }
    }
    //添加压缩文件
    public static void addToZipFile(String fileName, String fileAbsolutePath, ZipOutputStream zipOutputStream) throws IOException {
        // 创建ZipEntry对象并设置文件名
        ZipEntry entry = new ZipEntry(fileName);
        zipOutputStream.putNextEntry(entry);

        // 读取文件内容并写入Zip文件
        try (FileInputStream fileInputStream = new FileInputStream(fileAbsolutePath)) {
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = fileInputStream.read(buffer)) != -1) {
                zipOutputStream.write(buffer, 0, bytesRead);
            }
        }

        // 完成当前文件的压缩
        zipOutputStream.closeEntry();
    }
}

2.下载zip文件

/**
	 * 下载目标文件,其中目标文件是zip文件
	 *
	 * @param targetFile 目前文件
	 * @param response
	 * @return
	 */
	@GetMapping("/downloadZip")
	public void downloadZip(@RequestParam String targetFile, HttpServletResponse response) {
		//文件路径 C:/opt/dag/client/
		String folderPath = "C:/opt/dag/client/";
		String filePath = folderPath + targetFile+".zip";
		try (FileInputStream fileInputStream = new FileInputStream(filePath)) {
			response.setContentType("application/octet-stream");
			response.setHeader("Content-Disposition", "attachment;filename=\"" + targetFile +".zip"+ "\"");
			response.setHeader("Access-Control-Allow-Origin", "*");
			File downloadFile = new File(filePath);
			if (downloadFile.exists()&& !downloadFile.isDirectory()) {
				FileInputStream myStream = new FileInputStream(filePath);
				IOUtils.copy(myStream, response.getOutputStream());
			}else {
				boolean createZip = createZip(folderPath, targetFile);
				if (createZip){
					downloadZip(targetFile,response);
				}
			}
			response.flushBuffer();
			log.info("获取文件成功!");
		} catch (IOException e) {
			log.error(e.getMessage());
			boolean createZip = createZip(folderPath, targetFile);
			if (createZip){
				downloadZip(targetFile,response);
			}
		}
	}

完结!撒花!文章来源地址https://www.toymoban.com/news/detail-682955.html

到了这里,关于简单的文件夹压缩ZIP文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt 实现压缩文件、文件夹和解压缩操作zip

    通过Qt自带的库来实现,使用多线程方式,通过信号和槽来触发压缩与解压缩,并将压缩和解压缩结果回传过来。 使用的类: 1、在.pro文件中添加模块gui-private 若未cmake工程,需要在CMakeList.txt中添加 待验证: 1、中文路径,文件名含有中文 2、隐藏文件夹,.dir和…dir,例如:

    2024年02月14日
    浏览(45)
  • Zip压缩文件夹 + 前端导出

    2024年03月21日
    浏览(54)
  • [python]批量解压文件夹下所有压缩包(rar、zip、7z)

            在文件夹作用包含许多压缩包的时候,解压起来就很费时费力,尤其是在文件夹还存在嵌套的情况下,解压起来就更麻烦了。Franpper今天给大家带来递归遍历指定路径下的所有文件和文件夹,批量解压所有压缩包的方法,帮大家一键解压。         常见的压缩包格

    2024年02月09日
    浏览(63)
  • 如何用java给一个文件夹打成压缩包?

    上面的程序可以将 folderPath 指向的文件夹中所有文件和子文件夹打包成 zipFilePath 所指向的压缩文件。您只需要将文件夹路径和压缩文件路径替换为实际的值,然后在 Java 环境下运行该程序即可。 请注意,上面的代码块中的 PackageName 是您自己所定义的包名。如果没有将此类文

    2024年02月10日
    浏览(47)
  • java工具类 - 实现文件压缩zip及解压缩

    对hutool工具类进行的封装 解压缩 zipUtil是hutool包下的工具类 使用:

    2024年02月16日
    浏览(33)
  • vue3导入文件夹、导入文件、导出zip、导出

    记录一下之前项目用到的 导入文件夹 和 导入文件 出现的一些注意的点,直接上代码 注意:在传相同的文件时,会发现无法触发change事件    前端导出zip压缩包 我就用了最原始的方法axios 导出zip   因为之前也没有这样的需求 遇到过一个小问题就是,我的项目在config.js中判

    2024年02月20日
    浏览(40)
  • 【linux】tar指令压缩解压缩文件夹、文件命令详解

    压缩当前目录下文件夹/文件test到test.tar.gz: 解压缩当前目录下的file.tar.gz到file: -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 -z:有gzip属性的 -j:有bz2属性的 -Z:有compress属性的 -v:显示所有过程 -O:将文件解开到标准输

    2024年02月16日
    浏览(69)
  • php压缩一个文件夹,php下载多个图片

    把 100/ 这个文件夹,压缩成 一百.zip 然后得到zip所在的下载url 这个功能,需要PHP去掉禁用函数 shell_exec  

    2024年02月11日
    浏览(56)
  • Windows环境下通过 系统定时 执行脚本方式 压缩并备份文件夹 到其他数据盘

    压缩时需要使用7-zip进行调用,因此根据自己电脑进行安装 官网:https://www.7-zip.org/ 新建记事本文件,重命名为git_back_up.bat 注意:如果不设置可能会导致定时任务无法执行 开“控制面板-管理工具-本地安全策略”,选择“安全设置-本地策略-安全选项”,在右边列表中找到“

    2024年02月14日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包