java中将一个文件夹下所有的文件压缩成一个文件

/** 缓冲 */
static final byte[] buffer = new byte[2048];  


// 来源  
File inputDir = new File(request.getServletContext()  
    .getRealPath(Constant.getUploadPath()));  
if (null != inputDir.listFiles()) {  
    // 压缩  
    zip(inputDir.listFiles(), "", zip);  
}  


/** 
* 压缩ZIP 
*  
* @param files 
*            多个文件 
* @param baseFolder 
*            压缩到ZIP的父级目录(目录后面跟上File.separator) 
* @param zos 
*            ZipOutputStream 
* @throws Exception 
*/  
private static void zip(File[] files, String baseFolder, ZipOutputStream zos)  
        throws Exception {  
    // 输入  
    FileInputStream fis = null;  
    // 条目  
    ZipEntry entry = null;  
    // 数目  
    int count = 0;  
    for (File file : files) {  
        if (file.isDirectory()) {  
        // 递归  
        zip(file.listFiles(),  baseFolder + file.getName() + File.separator, zos);  
        continue;  
        }  
        entry = new ZipEntry(baseFolder + file.getName());  
        // 加入  
        zos.putNextEntry(entry);  
        fis = new FileInputStream(file);  
        // 读取  
        while ((count = fis.read(buffer, 0, buffer.length)) != -1) {  
        // 写入  
        zos.write(buffer, 0, count);  
        }  
        zos.closeEntry(); // 释放资源  
    }  
}  


记得用完zip要close掉

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏全栈

SpringMVC+GSON 对象序列化--日期格式的处理

1802
来自专栏腾讯云数据库(TencentDB)

【腾讯云CDB】教你玩转MyRocks/RocksDB—STATISTICS与后台线程篇

本文将介绍 SHOW ENGINE ROCKSDB STATUS 中关于 STATISTICS 统计值与后台线程的实现原理。

1.3K7
来自专栏王金龙的专栏

Java设计模式——线程安全的单件模式

  单件模式的类图是所有模式的类图中最简单的——只有一个类。尽管从类设计的视角来看单件模式很简单,但是实现上还是会遇到一些问题,本文着重对这一点来进行分析解决。

901
来自专栏分布式系统进阶

KafkaController分析3-ControllerChannelManager

使用NetworkClient连接到broker node, 使用selector处理网络IO;

791
来自专栏友弟技术工作室

python-MySQLdb的二三事

追寻 介绍 mysqldb是python操作mysql数据库的一个库.mysql的几乎所有的操作都可以实现,另外,mysqldb的一些比较的option让数据...

1.1K12
来自专栏比原链

Bytom Java版本离线签名

Gitee地址:https://gitee.com/BytomBlockchain/bytom

1424
来自专栏芋道源码1024

数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 执行

本文主要基于 Sharding-JDBC 1.5.0 正式版 1. 概述 2. ExecutorEngine 2.1 ListeningExecutorServ...

3787
来自专栏Java3y

纳税服务系统六(信息发布管理模块)【Ueditor、异步信息交互、抽取BaseService、条件查询、分页】

需求分析 我们现在来到了纳税服务系统的信息发布管理模块,首先我们跟着原型图来进行需求分析把: 一些普通的CRUD,值得一做的就是状态之间的切换了。停用和发布切换...

5026
来自专栏Samego开发资源

数据库Dao层抽象出BasicDao类 | 许久没碰Java了、致Java初学者

1844
来自专栏比原链

Bytom Java版本离线签名

Gitee地址:https://gitee.com/BytomBlockchain/bytom

1312

扫码关注云+社区

领取腾讯云代金券