package com.hwj.utils;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.apache.commons.io.FileUtils;
public class Test {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
// File file = new File("F:\\tmp\\image\\1564474497092");
crteateZip("F:\\tmp\\image\\1564474497092");
}
public static void crteateZip(String src) throws IOException {
ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
// FileOutputStream fos = new FileOutputStream("F:\\tmp\\image\\test.zip");
ZipOutputStream zipOutputStream=new ZipOutputStream(byteArrayOutputStream);
File file=new File(src);
a(zipOutputStream, file, "");
//压缩的路径
FileOutputStream fileOutputStream=new FileOutputStream(new File("F:\\tmp\\image\\test.zip"));
fileOutputStream.write(byteArrayOutputStream.toByteArray());
}
public static void a(ZipOutputStream zipOutputStream,File file,String dir) throws IOException {
//如果不是文件,遍历文件夹目录
if(file.isDirectory()) {
File[] files=file.listFiles();
//会在压缩文件中建立名字为 dir的文件夹
zipOutputStream.putNextEntry(new ZipEntry(dir+"/"));
dir=dir.length()==0 ? "" : dir+"/";
for(int i=0;i<files.length;i++) {
a(zipOutputStream,files[i],dir+files[i].getName());
}
}else {
//如果是文件将文件进行压缩
//dir字符串的格式为 x/y
//会在压缩文件中建立名字为x的文件夹中建立文件y文件
ZipEntry zipEntry=new ZipEntry(dir);
zipOutputStream.putNextEntry(zipEntry);
//压缩内容写入zipOutputStream流
zipOutputStream.write(FileUtils.readFileToByteArray(file));
zipOutputStream.flush();
zipOutputStream.closeEntry();
}
}
}