【问题标题】: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-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(); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-23
        • 1970-01-01
        • 2023-02-25
        • 1970-01-01
        • 1970-01-01
        • 2021-12-19
        相关资源
        最近更新 更多