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();
}
}