热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

java实现一次性压缩多个文件到zip中的方法示例

这篇文章主要介绍了java实现一次性压缩多个文件到zip中的方法,涉及java针对文件批量压缩相关的文件判断、遍历、压缩等操作技巧,需要的朋友可以参考下

本文实例讲述了java实现一次性压缩多个文件到zip中的方法。分享给大家供大家参考,具体如下:

1.需要引入包:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.springframework.util.StringUtils;

2.代码

/**
* @Title: compress
* @Description: TODO
* @param filePaths 需要压缩的文件地址列表(绝对路径)
* @param zipFilePath 需要压缩到哪个zip文件(无需创建这样一个zip,只需要指定一个全路径)
* @param keepDirStructure 压缩后目录是否保持原目录结构
* @throws IOException
* @return int  压缩成功的文件个数
*/
public static int compress(List filePaths, String zipFilePath,Boolean keepDirStructure) throws IOException{
     byte[] buf = new byte[1024];
     File zipFile = new File(zipFilePath);
     //zip文件不存在,则创建文件,用于压缩
     if(!zipFile.exists())
       zipFile.createNewFile();
     int fileCount = 0;//记录压缩了几个文件?
     try {
       ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile));
       for(int i = 0; i  0){
           zos.write(buf, 0, len);
         }
         zos.closeEntry();
         fis.close();
         fileCount++;
       }
       zos.close();
       //System.out.println("压缩完成");
     } catch (Exception e) {
       e.printStackTrace();
     }
     return fileCount;
}

3.测试

public static void main(String[] args) throws IOException {
     List sourceFilePaths = new ArrayList();
     sourceFilePaths.add("d:/test/C08065.jpg");
     sourceFilePaths.add("d:/test/新建文件夹/C08984.jpg");
     sourceFilePaths.add("d:/test/找不到我.jpg");//试一个找不到的文件
     //指定打包到哪个zip(绝对路径)
     String zipTempFilePath = "D:/test/test.zip";
     //调用压缩
     int s = compress(sourceFilePaths, zipTempFilePath,false);
     System.out.println("成功压缩"+s+"个文件");
}

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。


推荐阅读
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 本文详细记录了一位具有五年半开发经验的候选人,在华为Android高级开发职位面试过程中的经历。从早晨9点到下午5点半,经过了群体面试、技术面试、综合面试及英语面试等多个环节,最终成功通过考核。文章不仅分享了面试心得,还提供了宝贵的面试题资源。 ... [详细]
  • 深入解析Spring Cloud微服务架构与分布式系统实战
    本文详细介绍了Spring Cloud在微服务架构和分布式系统中的应用,结合实际案例和最新技术,帮助读者全面掌握微服务的实现与优化。 ... [详细]
  • 深入解析BookKeeper的设计与应用场景
    本文介绍了由Yahoo在2009年开发并于2011年开源的BookKeeper技术。BookKeeper是一种高效且可靠的日志流存储解决方案,广泛应用于需要高性能和强数据持久性的场景。 ... [详细]
  • 本文探讨了大型服务端开发过程中常见的几个误区,包括异步任务处理不当、日志同步模式使用、网络操作未设置超时、缓存命中率及响应时间未统计、单一缓存模式、分布式缓存加锁不当以及团队管理上的误区,旨在帮助开发者避免这些常见错误。 ... [详细]
  • 云屏系统基于嵌入式微系统msOS,旨在解决当前嵌入式彩屏GUI编程中硬件要求高、软件开发复杂、界面效果不佳等问题。该系统通过结合MCU和Android技术,利用Html5+JavaScript实现高效、易用的图形用户界面开发,使嵌入式开发人员能够专注于业务逻辑。 ... [详细]
  • 本文介绍了如何在 Flutter 应用程序中使用单例模式创建一个全局唯一的数据管理类,以确保在整个应用生命周期中数据的一致性和可访问性。 ... [详细]
  • 本文探讨了使用Java创建高效且可靠的基准测试的方法,强调了选择合适的工具和理解潜在影响因素的重要性。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 探讨手机时间显示停止的问题,分析可能的原因并提供有效的解决办法。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • Java 架构:深入理解 JDK 动态代理机制
    代理模式是 Java 中常用的设计模式之一,其核心在于代理类与委托类共享相同的接口。代理类主要用于为委托类提供预处理、过滤、转发及后处理等功能,以增强或改变原有功能的行为。 ... [详细]
  • 本文介绍了一个优化过的JavaScript函数,用于从API获取电影信息并渲染到网页上,同时注册Service Worker以提升用户体验和性能。 ... [详细]
  • 深入解析MySQL查询优化:特定类型查询的高级策略
    本文详细探讨了MySQL中特定类型查询的优化方法,包括COUNT()查询、关联查询、LIMIT分页及UNION查询的优化技巧,旨在提高数据库查询效率。 ... [详细]
  • MySQL性能测试标准倡议:老叶提出的压测基准
    进行MySQL的压力测试通常是为了评估新旧版本之间的性能差异、验证硬件升级的效果、测试参数调整的影响以及评估新业务的负载承受能力。老叶提出了一个MySQL压力测试基准值倡议,旨在促进行业内的标准化和成果共享。 ... [详细]
author-avatar
天极玩家_136
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有