如何将PrintWriter的结果保存在文件中,而不是在控制台中显示它

时间:2014-06-10 08:28:40

标签: java servlets printwriter

我有这个例子,它在控制台中显示结果

HttpServletResponse presponse
presponse.setContentType(text/xml; charset=UTF-8)

PrintWriter lout = presponse.getWriter();
lout.println(var);
lout.close();

但我想将结果保存在可下载文件中,而不是在控制台中显示它 能帮帮我吗

2 个答案:

答案 0 :(得分:1)

如果您不想将文件内容作为HTTP响应有效负载提供,则不应将其写入response.getWriter()。顺便说一句,你“在控制台中显示它”,你将它作为HTTP响应发送给客户的请求。

要在本地磁盘上保存包含该内容的文件,只需创建FileOutputStream并在其中写入文件内容。

对于HTTP响应,只需提供新创建的可下载文件的URL(作为Location标题或其他内容)。

答案 1 :(得分:0)

你可以这样做,你需要设置正确的mime-typecontent-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();