private void startDownFile(List<Map<String, Object>> list){
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String riqi = format.format(date);
String filename = "附件_"+riqi+".zip";
String FilePath = read.getConfig("filePath");
byte[] buffer = new byte[1024];
String strZipPath = FilePath + filename;
try {
List<File> files = new ArrayList<File>();
List<String> nameList=new ArrayList<String>();
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(strZipPath));
for(int i =0;i<list.size();i++){
String fpath = (String) list.get(i).get("wj_path").toString();
String showName = (String) list.get(i).get("wj_showname").toString();
File f = new File(fpath);
if(f.exists()){
files.add(f);
nameList.add(showName);
}
}
for(int j=0;j<files.size();j++){
// 向zip输出流中添加一个zip实体,构造器中name为zip实体的文件的名字
out.putNextEntry(new ZipEntry(nameList.get(j)+"\\"+files.get(j).getName()));
// 读入需要下载的文件的内容,打包到zip文件
FileInputStream fis = new FileInputStream(files.get(j));
int len;
while ((len = fis.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
out.closeEntry();
fis.close();
}
out.close();
} catch (Exception e) {
e.printStackTrace();
}
File file = new File(strZipPath);
downMainFile(this.getResponse(), file, filename);
}
private void downMainFile(HttpServletResponse response,File file,String name) {
try {
InputStream ins = new FileInputStream(file);
BufferedInputStream bins = new BufferedInputStream(ins);
OutputStream outs = response.getOutputStream();
BufferedOutputStream bouts = new BufferedOutputStream(outs);
response.setContentType("application/x-download");// 设置response内容的类型
response.setHeader(
"Content-disposition",
"attachment;filename="+ URLEncoder.encode(name, "UTF-8"));// 设置头部信息
int bytesRead = 0;
byte[] buffer = new byte[8192];
// 开始向网络传输文件流
while ((bytesRead = bins.read(buffer, 0, 8192)) != -1) {
bouts.write(buffer, 0, bytesRead);
}
bouts.flush();// 这里一定要调用flush()方法
ins.close();
bins.close();
outs.close();
bouts.close();
} catch (Exception e) {
e.printStackTrace();
}
}
java通过zip压缩文件夹
最新推荐文章于 2024-06-11 10:15:07 发布