欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

读取目录下文件打包zip文件

程序员文章站 2022-03-27 12:03:58
...


import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import java.util.Date; 
 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.util.zip.*; 
public class BatchDownload extends HttpServlet { 
 
public BatchDownload() { 
  super(); 

 

//直接存入ZipOutputStream 下载
public void doGet(HttpServletRequest request, HttpServletResponse response) 
   throws ServletException, IOException { 
  response.setContentType("APPLICATION/OCTET-STREAM"); 
  response.setHeader("Content-Disposition","attachment; filename="+this.getZipFilename()); 
  System.out.println("in BatchDownload................");  
  ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());    
     File[] files = new File[2]; 
     files[0]=new File("D:/OptiCM-POC/KDKK3Project/KDKK/images/1.jpg"); 
     files[1]=new File("D:/OptiCM-POC/KDKK3Project/KDKK/images/2.jpg"); 
     zipFile(files, "", zos);    
     zos.flush();    
     zos.close();    
 

private void zipFile(File[] subs, String baseName, ZipOutputStream zos) throws IOException {      
      for (int i=0;i<subs.length;i++) { 
       File f=subs[i]; 
       zos.putNextEntry(new ZipEntry(baseName + f.getName()));    
       FileInputStream fis = new FileInputStream(f);    
       byte[] buffer = new byte[1024];    
       int r = 0;    
       while ((r = fis.read(buffer)) != -1) {    
           zos.write(buffer, 0, r);    
       }    
       fis.close();  
      } 

private String getZipFilename(){ 
  Date date=new Date(); 
  String s=date.getTime()+".zip"; 
  return s; 

 
public void doPost(HttpServletRequest request, HttpServletResponse response) 
   throws ServletException, IOException { 
  this.doGet(request, response); 

}  

 

相关标签: zip