第一种形式,是以流的开式直接response,适用于数据量不是很大的情况下。
第二种形式,是先将要下载的文件写到后台的一个文件或者excel 中,然后再进行下载。
第一种实现:
private void writeCuHmToTxt(List list) throws Exception {
HttpServletResponse response = this.getResponse();
response.reset();
this.getResponse().setContentType("text/plain");
String fileName = URLEncoder.encode("非移动用户", "UTF-8");
this.getResponse().setHeader("Content-Disposition","attachment; filename=" + fileName + ".txt");
BufferedOutputStream buff = null;
StringBuffer write = new StringBuffer();
//String tab = " ";
String enter = "\r\n";
ServletOutputStream outSTr = null;
try {
outSTr = response.getOutputStream(); // 建立
buff = new BufferedOutputStream(outSTr);
for (int i = 0; i < list.size(); i++) {
Object[] objs = list.get(i);
write.append(objs[1].toString() + enter);
}
buff.write(write.toString().getBytes("UTF-8"));
buff.flush();
buff.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
buff.close();
outSTr.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
第二种实现:
// 输出TXT
public static void writeToTxt(HttpServletRequest request, List list) {
FileOutputStream outSTr = null;
BufferedOutputStream Buff = null; String path = request.getSession().getServletContext().getRealPath(
"upordown/down/model/magazinePub.txt");
String tab = " ";
String enter = "\r\n";
MagazineBean magazine;
StringBuffer write ;
try {
outSTr = new FileOutputStream(new File(path));
Buff = new BufferedOutputStream(outSTr);
for (int i = 0; i < list.size(); i++) {
magazine = (MagazineBean) list.get(i);
write = new StringBuffer();
write.append("期刊名称:" + tab);
write.append(delNull(magazine.getTenet()) + enter);
write.append(enter);
Buff.write(write.toString().getBytes("UTF-8"));
}
Buff.flush();
Buff.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
Buff.close();
outSTr.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
2011-01-11 16:19
浏览 7506
评论
2 楼
piaoxue_x
2011-11-28
冒昧的问一下,博主你是个妹纸吗?写的不错,顶你。。。。
1 楼
cl1154781231
2011-10-14
非常好!谢谢!