博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将某个目录下的所有文件进行压缩
阅读量:6000 次
发布时间:2019-06-20

本文共 2689 字,大约阅读时间需要 8 分钟。

/**  * @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

你可能感兴趣的文章
Unity ScriptableObject自定义属性显示
查看>>
【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】
查看>>
ORACLE内存管理之ASMM AMM
查看>>
移动前端常用meta标签
查看>>
非结构化数据与结构化数据提取---多线程爬虫案例
查看>>
splay版
查看>>
unity 打包编译记录
查看>>
CSS知识总结(四)
查看>>
软件工程第一次作业
查看>>
22. Generate Parentheses
查看>>
MDL相关总结
查看>>
11.表达式语言
查看>>
3.数据校验和SpringEL
查看>>
面向对象编程-何为对象
查看>>
L2TP/IPSec一键安装脚本
查看>>
android以json形式提交信息到服务器
查看>>
CetnOS 6.7安装Hive 1.2.1
查看>>
最短最优升级路径(完美世界2017秋招真题)
查看>>
【PHP基础】错误处理、异常处理
查看>>
Android之drawable state各个属性详解
查看>>