将某个目录下的所有文件进行压缩
2017-10-09 17:49
169 查看
/** * @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.压缩后存放的目录 }
相关文章推荐
- 对当前目录下所有文件进行压缩代码
- TBCompressor 2.4.2修改版,可对目录中的JS/CSS文件进行压缩
- 用7z压缩目录下的所有文件(保留源文件名,后缀改为7z)
- Linux系统下创建任务,对指定目录文件进行自动压缩存档
- Python遍历目录下所有文件的最后一行进行判断若错误及时邮件报警-案例
- 递归解压当前目录以及子目录下的所有压缩文件,并删除源文件
- Java实现Zip压缩/解压缩目录中的所有文件
- 自动解压目录及子目录下所有压缩文件的批处理(偷懒专用^_^)
- 自动解压目录及子目录下所有压缩文件的批处理(偷懒专用^_^)
- 用Java压缩文件或目录下的所有文件
- java 把指定文件夹下的所有文件目录和文件都压缩到指定文件夹下
- C#实现Zip压缩目录中所有文件的方法
- 对指定的目录进行递归获取递归过程所有的java文件的路径。
- 通达OA触发器--压缩保存工作流中的表单文件和所有附件到服务器的指定目录(2013adv,2015,2016)
- Linux系统下创建任务,对指定目录文件进行自动压缩存档
- 用Java压缩文件或目录下的所有文件
- 找到目录下的文件夹 并且进行压缩,然后再生成压缩文件到指定目录
- Java实现压缩一个目录下所有图片文件
- 续:C# 趣味小程序(4)——遍历特定目录及其子目录 (应用实例,压缩指定目录下的所有文件)