包含压缩文件或文件夹、压缩多个文件或文件夹、按数量分段压缩文件夹
使用带缓冲的输入流提高压缩速度

package com.client.util;import java.io.*;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;/*** 说明:java压缩成zip*/
public class FileZip {private static void zip(ZipOutputStream out, File f, String base) throws Exception {if (f.isDirectory()) {File[] fl = f.listFiles();out.putNextEntry(new ZipEntry(base + "/"));base = base.length() == 0 ? "" : base + "/";for (int i = 0; i < fl.length; i++) {zip(out, fl[i], base + fl[i].getName());}} else {out.putNextEntry(new ZipEntry(base));BufferedInputStream in=new BufferedInputStream(new FileInputStream(f));byte[] b=new byte[1024];int len=0;while ((len=in.read(b)) != -1) {out.write(b,0,len);}in.close();}}/**压缩一个文件夹到压缩包,生成的压缩包在该文件夹下* @param zipName 压缩文件名,包含后缀,不包含路径*/public static void zipDir(String dirPath,String zipName){File file=new File(dirPath);if(file.isDirectory()){File[] files = file.listFiles();FileUtil.createIfNoExist( dirPath+"\\"+zipName,true);try(ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(dirPath + "\\" + zipName))){zip(zipOutputStream,files,"");zipOutputStream.flush();} catch (Exception e) {e.printStackTrace();}}}/**压缩多个文件或文件夹到一个压缩输出流*/public static void zip(ZipOutputStream out,File[] files,String base) throws Exception {for (int i = 0; i < files.length; i++) {zip(out, files[i], base +files[i].getName());}}/**压缩多个文件或文件夹到一个压缩包*/public static void zip(String zipPathname,File[] files){FileUtil.createIfNoExist(zipPathname,true);try(ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipPathname))){zip(zipOutputStream,files,"");zipOutputStream.flush();} catch (Exception e) {e.printStackTrace();}}/**分段压缩文件夹中的文件或文件夹到多个压缩包* @param itemsPerZip 每个压缩包的文件或文件夹数*/public static void partitionZipDir(String dirPath,int itemsPerZip){File dir=new File(dirPath);if(!dir.isDirectory())throw new RuntimeException(dirPath+" 不是目录");File[] files = dir.listFiles();int total= files.length/itemsPerZip;if(files.length%itemsPerZip!=0)total++;System.out.println("压缩文件数:"+total);int zipCount=1;int start,end;while (true){System.out.println("("+zipCount+"/"+total+")");start=(zipCount-1)*itemsPerZip;end=zipCount*itemsPerZip-1;if(end>= files.length)end= files.length-1;File[] partFiles=new File[end-start+1];System.arraycopy(files, start, partFiles, 0, partFiles.length);zip(dirPath+"/zipPart"+zipCount+".zip",partFiles);if(end>= files.length-1)break;zipCount++;}}/**压缩文件到压缩包* @param zipPathname 压缩包的全路径名*/public static void zipFile(String filePathname,String zipPathname){File file=new File(filePathname);if(file.isFile()){FileUtil.createIfNoExist( zipPathname,true);try(ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipPathname))){zip(zipOutputStream,file,"");zipOutputStream.flush();} catch (Exception e) {e.printStackTrace();}}}public static void main(String [] temp){partitionZipDir("E:\\a",10);}
}

java压缩文件(夹)相关推荐

  1. java 压缩文件夹_java 实现压缩文件(单文件 或 文件夹)

    接着上篇了解一下java压缩实现过程,下面的是支持 单文件 或 文件夹 压缩的实现,使用递归. 效果: 代码: package com.gx.compress; import java.io.Buff ...

  2. 【转载】用java压缩文件夹/文件

    压缩文件夹代码: import java.io.File; import org.apache.tools.zip.ZipOutputStream; //这个包在ant.jar里,要到官方网下载 im ...

  3. java压缩文件夹(含有空文件夹)

    两种实现方式: java.util.zip.ZipOutputStream org.apache.tools.ant 注意 最初采用java.util.zip.ZipOutputStream的方式, ...

  4. linux下 java 压缩文件夹,java压缩文件夹linux下乱码问题

    前几天写了文章介绍java文件夹的压缩(见 http://zwllxs.iteye.com/blog/836483),但是发现一个问题,在linux下,如果文件夹内的文件是中文名,那么压缩后,这些文件 ...

  5. java zip文件夹_如何使用java压缩文件夹成为zip包

    展开全部 在JDK中有一个zip工具类:java.util.zip    Provides classes for reading and writing the standard ZIP and G ...

  6. java压缩文件夹并加密

    工作遇到,记录下 import net.lingala.zip4j.core.ZipFile; import net.lingala.zip4j.exception.ZipException; imp ...

  7. java快速压缩文件夹_如何使用java压缩文件夹本身

    它可以通过包java.util.Zip轻松解决,不需要任何额外的Jar文件 只需复制以下代码并使用IDE运行它 //Import all needed packages package general ...

  8. java 压缩文件tar_使用Java API进行tar.gz文件及文件夹压缩解压缩

    在java(JDK)中我们可以使用ZipOutputStream去创建zip压缩文件,(参考我之前写的文章 使用java API进行zip递归压缩文件夹以及解压 ),也可以使用GZIPOutputSt ...

  9. Java压缩文件和文件夹为zip格式

    工具类ZipUtils 如下: package utils;import java.io.File; import java.io.FileInputStream; import java.io.IO ...

最新文章

  1. 剑指offer:面试题30. 包含min函数的栈
  2. Blender未来科幻武器全流程制作视频教程
  3. 阿里云力夺FewCLUE榜首!知识融入预训练+小样本学习的实战解析
  4. Android应用程序之间共享文字和图片(一)
  5. HttpServletRequest中getAttribute()和getParameter()的区别
  6. 纯CSS实现圆角边框
  7. H3C的DHCP中继配置命令
  8. 【树莓派】在树莓派上制作开机自启动程序及服务2
  9. Spring Boot干货系列:(十二)Spring Boot使用单元测试
  10. 移动APP测试,adb工具
  11. CommandName 和 CommandArgument的区别
  12. 高精度地图技术与展望
  13. 植物大战僵尸的闯关关数以及金钱修改
  14. BehaviorTree + Groot 在ros中的运用
  15. 《51单片机C语言程序设计教程》涉及的细节问题笔记
  16. 跟随艺术家林曦的脚步 学习“只生欢喜不生愁”的生活态度
  17. 嵌入式AI开发:Maixduino目标识别分类
  18. 学习JQuery - 10
  19. java 日期calendar_java成神之——date和calendar日期的用法
  20. 博士延期的我,女友已经是副教授了

热门文章

  1. 微积分的需求和基本定理
  2. 解决phpmyadmin空密码无法登陆mysql
  3. 各大电商平台API数据,淘宝天猫的api明细接口
  4. 如何利用 DITA 实现高效的跨部门内容共享?
  5. 用spring.data的API,ElasticsearchRestTemplate来简单操作Elasticsearch的增删改查等功能~
  6. MySQL好多按键灰的_键盘太多灰了怎么办?教你几招清理键盘的小妙招,赶紧学起来~...
  7. 网页图片刷新闪烁解决办法
  8. Android/ios 如何识别app下载来源追踪
  9. 手把手教你生成你的独家微信聊天年度报告
  10. create_function()函数利用