专栏首页Java开发java中将一个文件夹下所有的文件压缩成一个文件

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 条评论
登录 后参与评论

相关文章

  • 配置quartz启动时就执行一次

    試毅-思伟
  • GitBook生成pdf出现中文不显示或乱码

    找不到msyh.ttc文件可以从 控制面板 > 外观和个性化 > 字体 中复制对应的字体文件到/usr/share/fonts/truetype目录下

    試毅-思伟
  • 搭建 ElasticSearch 6.1.3分布式集群

    先启动mac上的master,再启动Ubuntu上的slave节点,观察输出,会有一个node-102探测到master节点的提示:

    試毅-思伟
  • Leetcode 123 Best Time to Buy and Sell Stock III

    Say you have an array for which the ith element is the price of a given stock o...

    triplebee
  • PathVisio : wiki pathway 通路图可视化工具

    PathVisio 是一款免费开源的pathway 可视化工具,通过这个软件我们不仅可以创建并编辑通路图,甚至还可以进行富集分析。

    生信修炼手册
  • 带你少走弯路:强烈推荐的Keras快速入门资料和翻译(可下载)

    上次写了TensorFlow和PyTorch的快速入门资料,受到很多好评,读者强烈建议我再出一个keras的快速入门路线,经过翻译和搜索网上资源,我推荐4份入门...

    材ccc
  • 【投稿专区】crc校验码的计算

    在Modbus或环保212协议中,数据的校检码(CRC-16)由两个字节16位构成。而一般电气、自动化仪表的crc16校验,多项式码选用16进制A001。 CR...

    李海彬
  • Linux history命令

    二狗不要跑
  • 性能测试Locust--(4)逐步负载模式

    如果想在不同的用户负载下监控服务性能,并探测可以实现的最大tps,可以在启用“逐步负载”模式运行Locust--stp-load

    软测小生
  • 一个有趣的问题

    前言   这个问题来自于看到的一个面试题,其中的解题过程比较有趣,有很多值得借鉴的地方,这里写出来作为记录。 题目 假设一栋100层的楼,两个完全一样的鸡蛋。...

    SecondWorld

扫码关注云+社区

领取腾讯云代金券