将目录下文件压缩至多个包
package com.asia.test.TestZipFiles; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class ziptest { public static void main(String[] args) { // TODO Auto-generated method stub ziptest ziptest = new ziptest(); try { ziptest.zip("E:\\","E:\\新建文件夹 (2) - 副本",50); File file = new File("E:\\新建文件夹 (2) - 副本"); ziptest.deleteFiles(file); } catch (Exception e) { e.printStackTrace(); } } private void deleteFiles(File file){ if(file.isDirectory()){ File[] files = file.listFiles(); for(int i=0; i<files.length;i++){ deleteFiles(files[i]); } } file.delete(); } private void zip(String zipPath, String dirPath,int count) throws Exception { System.out.println("压缩中..."); File inputFile = new File(dirPath); File[] fl = inputFile.listFiles(); int k = fl.length/count; int h = fl.length%count; for(int j=0;j<=k;j++){ if(j<k){ File zipFile = new File(zipPath+"testzip_"+j+".zip"); FileOutputStream fileOutputStream = new FileOutputStream(zipFile); ZipOutputStream out = new ZipOutputStream(fileOutputStream); BufferedOutputStream bo = new BufferedOutputStream(out); for(int i = j*count; i < (j+1)*count; i++){ zip(out, fl[i], bo); // 递归遍历子文件夹 } bo.close(); out.close(); // 输出流关闭 } if(j==k && h!=0){ File zipFile = new File(zipPath+"testzip_"+j+".zip"); FileOutputStream fileOutputStream = new FileOutputStream(zipFile); ZipOutputStream out = new ZipOutputStream(fileOutputStream); BufferedOutputStream bo = new BufferedOutputStream(out); for(int i = j*count; i < fl.length; i++){ zip(out, fl[i], bo); // 递归遍历子文件夹 } bo.close(); out.close(); // 输出流关闭 } } System.out.println("压缩完成"); } private void zip(ZipOutputStream out, File f,BufferedOutputStream bo) throws Exception { // 方法重载 out.putNextEntry(new ZipEntry(f.getName())); // 创建zip压缩进入点base FileInputStream in = new FileInputStream(f); BufferedInputStream bi = new BufferedInputStream(in); int b; while ((b = bi.read()) != -1) { bo.write(b); // 将字节流写入当前zip目录 } bi.close(); in.close(); // 输入流关闭 bo.flush(); } }