【问题标题】:How can'i save the result of a PrintWriter in file instead of display it in the console如何将 PrintWriter 的结果保存在文件中而不是在控制台中显示
【发布时间】:2014-06-10 08:28:40
【问题描述】:
我有一个在控制台中显示结果的示例
HttpServletResponse presponse
presponse.setContentType(text/xml; charset=UTF-8)
PrintWriter lout = presponse.getWriter();
lout.println(var);
lout.close();
但我想将结果保存在可下载的文件中,而不是在控制台中显示
你能帮帮我吗
【问题讨论】:
标签:
java
servlets
printwriter
【解决方案1】:
如果您不想将文件内容作为 HTTP 响应负载提供,则不应将其写入 response.getWriter()。顺便说一句,您不是“在控制台中显示它”,而是将其作为对客户端请求的 HTTP 响应发送。
要将包含该内容的文件保存在本地磁盘上,只需创建一个FileOutputStream 并将文件内容写入其中。
至于 HTTP 响应,只需提供新创建的可下载文件的 URL(作为 Location 标头或其他)。
【解决方案2】:
您可以这样做,您需要设置正确的mime-type 和content-length 标头。
File downloadFile = new File(filePath);
FileInputStream inStream = new FileInputStream(downloadFile);
// obtains response's output stream
OutputStream outStream = response.getOutputStream();
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, bytesRead);
}
inStream.close();
outStream.close();