java 数据打包_JAVA_读取数据库数据并打成ZIP包下载

package com.comtop.product.taskform.catalogmanagement.action;

import javax.servlet.http.HttpServlet;

import java.io.BufferedInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

import org.apache.tools.zip.ZipEntry;

import org.apache.tools.zip.ZipOutputStream;

import com.comtop.util.Toolkit;

import com.comtop.eaiform.TemplateInfo;

import com.comtop.product.taskform.delegate.TemplateMan;/**

* 作业表单ZIP包下载servlet

* @author  周波

* @since   JDK1.4

* @History 2011年9月2日15:35:49 周波 新建*/publicclassDownTaskFormTemplate extends HttpServlet{/** 日志对象*/privatefinal Logger logger=Toolkit.getLogger(this.getClass().getName());publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{

downloadTaskFrom(request, response);

}publicvoiddoPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{

}/**下载作业表单ZIP包

*

**/publicvoiddownloadTaskFrom(HttpServletRequest request, HttpServletResponse

response)throws ServletException, IOException{//模板版本IDString template_version_id=request.getParameter("template_version_id");//ZIP包名String tempalteName=request.getParameter("template_Name");

ZipOutputStream zipOut=null;

InputStream ins=null;try{

response.reset();//下载zip文件名String strZipFileName=tempalteName+".zip";//得到输出流response.setHeader("Content-Disposition:","attachment;filename="+newString(strZipFileName.getBytes("gb2312"),"ISO8859_1"));

String path=this.getServletContext().getRealPath("");

StringBuffer sbPath=newStringBuffer(path);

sbPath.append("/temp/");//2011-5-10 确认是否存在temp文件夹,若不存在则先创建this.checkAndCreatePacakage(sbPath.toString());

sbPath.append(strZipFileName);

FileOutputStream objFileOutputStream=newFileOutputStream(newFile(sbPath.toString()));

zipOut=newZipOutputStream(objFileOutputStream);

TemplateMan objTemplateMan=newTemplateMan();

String[] files=objTemplateMan.getReportFile(template_version_id);//写入XML存储格式if(files[0]!=null){

writeXmlFile(zipOut,files[0],tempalteName+"存储格式.xml");

}//写入XML模板内容if(files[1]!=null){

writeXmlFile(zipOut,files[1],tempalteName+"模板内容.xml");

}//写入HTML内容if(files[2]!=null){

writeXmlFile(zipOut, files[2],tempalteName+"HTML内容.html");

}//下载标准模板//newDownStandarTemplate(packageId,zipOut);//关闭ZIP流if(zipOut!=null) {

zipOut.close();

}

writeOutStream(sbPath.toString(),response);

}catch(Exception e) {

logger.error("action.DownTaskFormTemplate.下载作业表单ZIP包出错!",e);

}

}privatevoidwriteXmlFile(ZipOutputStream zipOut,String file,String filwName){try{

zipOut.putNextEntry(newZipEntry(filwName));//转换为ZIP文件zipOut.write(file.getBytes("UTF-8"),0, file.getBytes("UTF-8").length);//关闭ZIP输出流zipOut.closeEntry();

}catch(Exception e){

logger.error("文件写入异常",e);

}

}/**

* 2011-09-02 周波 创建 确认是否存在文件夹,若不存在则创建

* @param filePath*/privatevoidcheckAndCreatePacakage(String filePath){

File objFile=newFile(filePath);if(!objFile.isDirectory()){

objFile.mkdirs();

}

}//输出流privatevoidwriteOutStream(String fileName,HttpServletResponse response)throws ServletException, IOException{

OutputStreamout=response.getOutputStream();

File objFile=newFile(fileName);

FileInputStream objFileInputStream=newFileInputStream(objFile);//定义缓存输入流BufferedInputStream objBufferedInputStream=newBufferedInputStream(objFileInputStream);//缓存区byte[] buffer=newbyte[5000];while(true) {//读入缓存输入流intbytesRead=objFileInputStream.read(buffer,0, buffer.length);if(bytesRead<0) {break;

}//写入输出流out.write(buffer,0, bytesRead);

}//关闭缓存输入流objBufferedInputStream.close();//关闭文件输入流objFileInputStream.close();//刷新和关闭输出流out.flush();out.close();//将临时文件删除objFile.delete();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值