import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.UUID;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
public class ZipUtil {
private ZipUtil(){
}
public static void downZipFile(HttpServletResponse res){
String basePath="/upload/fileDir";
File file = new File(basePath);
File file1=new File("/test/tem.zip");
File files=new File("/test");
if(!files.exists()){
files.mkdirs();
}
if(!file1.exists()){
try {
file1.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("记录日志");
return;
}
}
try ( ZipOutputStream zip=new ZipOutputStream(new FileOutputStream(file1));//zip的临时存放地址
ServletOutputStream outputStream = res.getOutputStream();
FileInputStream in=new FileInputStream(file1);
BufferedInputStream ins=new BufferedInputStream(in);){
//读取zip 大文件的时候 记得添加缓冲区
File[] listFiles = file.listFiles();
//创建 zip文件
createZipFile(listFiles,zip);
zip.close();
res.setContentType("text/html; charset=UTF-8"); //设置编码字符
res.setContentType("application/octet-stream"); //设置内容类型为下载类型
res.setHeader("Content-disposition", "attachment;filename=tes.zip");//设置下载的压缩文件名称
byte [] buff=new byte[1024];//记得一定要有缓存池
int i=0;
while((i=ins.read(buff))>0){
outputStream.write(buff,0,i);
}
outputStream.flush();
} catch (Exception e) {
System.out.println("记录日志");
return;
}finally {
//创造的临时文件夹删除
if(file1.exists()){
file1.delete();
}
}
}
private static void createZipFile(File [] listFiles,ZipOutputStream zip){
for (File file : listFiles) {
//是文件
if(file.isFile()){
try(BufferedInputStream buffer=new BufferedInputStream(new FileInputStream(file));){
ZipEntry zipEntry=new ZipEntry(file.getName());
zip.putNextEntry(zipEntry);
byte [] buff=new byte[2048];
int i=0;
while((i=buffer.read(buff))>0){
zip.write(buff,0,i);
}
zip.closeEntry();
}catch(Exception e){
e.printStackTrace();
}
}
else{
File[] listFiles2 = file.listFiles();
createZipFile(listFiles2,zip);
}
}
}
public static void main(String[] args) {
File file1=new File("/test/tem.zip");
System.out.println(file1.delete());
}
}