/** * @project: Test * @author chenssy * @date 2013-7-28 * @Description: 文件压缩工具类 *                   将指定文件/文件夹压缩成zip、rar压缩文件 */ class CompressedFileUtil {    /**     * 默认构造函数     */    public CompressedFileUtil(){

    }    /**     * @desc 将源文件/文件夹生成指定格式的压缩文件,格式zip     * @param resourcesPath 源文件/文件夹     * @param targetPath  目的压缩文件保存路径     * @return void     * @throws Exception     */    public void compressedFile(String resourcesPath,String targetPath) throws Exception{        File resourcesFile = new File(resourcesPath);     //源文件        File targetFile = new File(targetPath);           //目的        //如果目的路径不存在,则新建        if(!targetFile.exists()){            targetFile.mkdirs();        }

        String targetName = resourcesFile.getName()+".zip";   //目的压缩文件名        FileOutputStream outputStream = new FileOutputStream(targetPath+"\\"+targetName);        ZipOutputStream out = new ZipOutputStream(outputStream);

        createCompressedFile(out, resourcesFile, null);

        out.close();    }

    /**     * @desc 生成压缩文件。     *                  如果是文件夹,则使用递归,进行文件遍历、压缩     *       如果是文件,直接压缩     * @param out  输出流     * @param file  目标文件     * @return void     * @throws Exception     */    public void createCompressedFile(ZipOutputStream out,File file,String dir) throws Exception{        //如果当前的是文件夹,则进行进一步处理        if(file.isDirectory()){            //得到文件列表信息            File[] files = file.listFiles();            //将文件夹添加到下一级打包目录            if(dir!=null){//这个判断是防止打包出一个没有名字的空文件夹                out.putNextEntry(new ZipEntry(dir+"/"));                dir = dir.length() == 0 ? "" : dir +"/";            }            if(dir==null){//防止第一次下面调用dir是为空                dir = "";            }            //循环将文件夹中的文件打包            for(int i = 0 ; i < files.length ; i++){                createCompressedFile(out, files[i], dir + files[i].getName());         //递归处理            }        }        else{//当前的是文件,打包处理            //文件输入流            FileInputStream fis = new FileInputStream(file);

            out.putNextEntry(new ZipEntry(dir));            out.setEncoding("utf8");            //进行写操作            int j =  0;            byte[] buffer = new byte[1024];            while((j = fis.read(buffer)) > 0){                out.write(buffer,0,j);            }            //关闭输入流            fis.close();        }    }

测试:
public static void main(String[] args) throws Exception {    CompressedFileUtil compressedFileUtil = new CompressedFileUtil();    compressedFileUtil.compressedFile("E:\\aaa", "E:\\wang");//param1.要压缩的目录,param2.压缩后存放的目录}

转载于:https://www.cnblogs.com/wangjing666/p/7642141.html

将某个目录下的所有文件进行压缩相关推荐

  1. 递归思想解决输出目录下的全部文件

    刚刚了解了下递归思想 递归就是在方法内调用本方法 下面说一个实际的应用 输出目录下的全部文件,当目录中还有目录时,则进入目录输出里面的文件 import java.io.*; class ShowFi ...

  2. 用bash命令得到Windows一个目录下的所有文件并且把结果输入到一个文件

    方式一: 只用如下一条语句就可以了: tree/f>index.txt 放入一个文件中命名为"****.bat" 双击就会在该目录下生成一个index.txt文件,在这个文件 ...

  3. python删除过期文件_Python删除指定目录下的过期文件的代码

    在代码过程中,将代码过程中比较常用的一些代码段做个备份,如下的代码是关于Python删除指定目录下的过期文件的代码,应该能对小伙伴也有帮助. import os import sys import t ...

  4. Apache Tomcat 曝文件包含漏洞:攻击者可利用该漏洞读取webapp目录下的任意文件...

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | oschina 来源 | https://ww ...

  5. python 递归目录_Python3:递归实现输出目录下所有的文件

    今天来整理一下os库中方法的使用,如何输出一个目录下的所有文件? 1.首先介绍几个基本的的方法: 1)os.getcwd()  #返回当前工作目录 2)os.listdir()    #返回一个列表, ...

  6. java 指定文件格式_java删除指定目录下指定格式文件的方法

    本文实例为大家分享了java删除指定目录下指定格式文件的具体代码,供大家参考,具体内容如下 正在看疯狂java讲义这本书,发现源码中有我不需要的class文件,想批量把它删除 代码如下: import ...

  7. TreeView获取目录下的所有文件

    /// <summary> /// TreeView获取目录下的所有文件 /// </summary> /// <param name="tree"& ...

  8. java 20 -3 递归之删除特定目录下的特定文件

    1 /* 2 需求:删除H:\demo目录下的带内容的文件 3 分析: 4 A:封装该目录 5 B:获取该目录下所有的文件或文件夹的File数组 6 C:遍历该File数组,获取每一个File对象 7 ...

  9. html复制文件到目录,复制指定目录下的全部文件到另一个目录中

    linux下文件的复制.移动与删除命令为:cp,mv,rm 复制指定目录下的全部文件到另一个目录中 假设复制源目录 为 dir1 ,目标目录为dir2.怎样才能将dir1下所有文件复制到dir2下了 ...

最新文章

  1. python实现二分查找(折半查找)算法
  2. 盘州2021高考成绩查询,盘州2021高中复读
  3. 【软考-软件设计师】计算机安全
  4. keras从入门到放弃 (一) 线性回归
  5. 从Java到Go面向对象--继承思想.md
  6. Storm 起步 Zookeeper Storm 单机部署
  7. PostgreSQL SQL OUTLINE插件sr_plan (保存、篡改、固定 执行计划)
  8. 【声学基础】概述——振动学
  9. 天外印刷的计件工资项目结束了
  10. 前端利器!让AI根据手绘原型生成HTML | 教程+代码
  11. [置顶] Android玄铁剑之TextView之图文并茂
  12. 铭瑄显卡不支持Linux,铭瑄主板bios设置显卡方法
  13. Comet OJ 热身赛(K题)principal(括号匹配问题+stack模拟)
  14. 中文文本分析工具总结
  15. 京东价格监控软件开发技术探讨一:C#实现获取京东商品信息(价格、库存)
  16. 冰点还原 7.20.20.3398 For Win2003 支持2TB硬盘版下载,附KEY和修改方法
  17. python common很久不用我都忘了一些函数了,给boss添麻烦了
  18. 结对编程的合作情况,以及结对编程的优缺点
  19. 【第一部分-环境搭建】Opencv环境搭建(Visual Studio+Windows)
  20. 美拍短视频成本减半及毫秒起播优化实践

热门文章

  1. Eclipse中实现SpringBoot与Mybatis整合(图文教程带源码)
  2. spring系列-注解驱动原理及源码-声明式事务使用及原理解析
  3. 6、ShardingSphere 之 读写分离
  4. 论大型信息系统集成项目的整体管理
  5. java的语法结构_Java中的语法规范语法结构
  6. python3框架的rf_pythonRF框架
  7. mysql 集群备份脚本_MysqlBackup
  8. 第7组-17级通信三班-227-抓包分析
  9. Harbor管理docker镜像(1.7.5版本-主从复制)
  10. hdu2089 不要62 数位dp