如何使用字符串内容创建txt文件并下载该txt文件

时间:2019-05-29 09:32:37

标签: java filewriter fileoutputstream

我正在使用java和struts。我的情况是页面中有“下载” 链接。单击此链接后,控件转到 Action类,在这里我有String内容,需要将其写入 .txt 文件,然后下载该txt文件。 / p>

最终,每当我们单击下载链接时,我们都应该能够下载包含特定字符串内容的txt文件。

我在下面的代码段中使用了

FileOutputStream outputStream = new FileOutputStream(fileNameWithDirectory);
outputStream.write(fileContentString.getBytes());
outputStream.close();
ActionForward forward = new ActionForward("doc/" + filename);
forward.setName(filename);
forward.setRedirect(true);
return forward;

我也尝试用FileWriter代替FileOutputStream

FileWriter fileWriter = new FileWriter(fileNameWithDirectory);
fileWriter.write(fileContentString);
fileWriter.flush();
fileWriter.close();

但始终不下载txt文件,而是打开一个新窗口,在其中写入String内容。 请提出建议,我该如何下载该 .txt 文件。

3 个答案:

答案 0 :(得分:0)

您应该添加Content-Disposition: attachment来表示浏览器,它应该下载文件而不是打开文件。

查看更多详细信息here

Struts也有DownloadAction,您也可以使用它。

答案 1 :(得分:0)

您无需编写文件,然后重定向到它。您可以设置一个名为Content-Disposition的http响应标头,然后将数据打印到http响应正文中。

像这样使用它

response.addHeader("Content-Disposition", "Content-Disposition: attachment; filename=\""+filename+"\"");

当然这取决于您使用的技术堆栈。

答案 2 :(得分:0)

将文本文件转换为流。并设置要下载的内容类型。 response.setContentType(“ application / pdf”);

try {
      // get your file as InputStream
      InputStream is = ...;

      // copy it to response's OutputStream
      org.apache.commons.io.IOUtils.copy(is, convertedTextFiletoStream);

    } catch (IOException ex) {
      log.info("Error writing file to output stream. Filename was '{}'", fileName, ex);
      throw new RuntimeException("IOError writing file to output stream");
    }