【发布时间】:2010-11-17 07:59:38
【问题描述】:
问题是,用户在 JSP 中单击一个按钮,将导出显示的数据。所以我正在做的是,创建一个临时。文件并将内容写入其中 [ resultSet >> xml >> csv ],然后将内容写入 ServletResponse。关闭响应输出流后,我尝试删除文件,但每次都返回 false。
代码;
public static void writeFileContentToResponse ( HttpServletResponse response , String fileName ) throws IOException{
ServletOutputStream responseoutputStream = response.getOutputStream();
File file = new File(fileName);
if (file.exists()) {
file.deleteOnExit();
DataInputStream dis = new DataInputStream(new FileInputStream(
file));
response.setContentType("text/csv");
int size = (int) file.length();
response.setContentLength(size);
response.setHeader("Content-Disposition",
"attachment; filename=\"" + file.getName() + "\"");
response.setHeader("Pragma", "public");
response.setHeader("Cache-control", "must-revalidate");
if (size > Integer.MAX_VALUE) {
}
byte[] bytes = new byte[size];
dis.read(bytes);
FileCopyUtils.copy(bytes, responseoutputStream );
}
responseoutputStream.flush();
responseoutputStream.close();
file.delete();
}
我使用过'file.deleteOnExit();'和 file.delete();但它们都不起作用。
【问题讨论】:
-
不能导出到内存缓冲区,直接将其内容写入输出流吗?
-
CSV 文件太小了,不好好保存在内存中
-
Rakesh,您可能想尝试将这个问题归结为您正在尝试做的事情,即。询问如何从 Web 应用程序以 CSV 格式提供大型结果集,而不是如何删除文件。
标签: java file jsp jakarta-ee