Java servlet和IO:创建文件而不保存到磁盘并将其发送给用户

Lat*_*uck 7 java io servlets outputstream response

我希望可以帮助我解决文件创建/响应问题.我知道如何创建和保存文件.我知道如何通过ServletOutputStream将该文件发送回用户.

但我需要的是创建一个文件,而不是将其保存在磁盘上,然后通过ServletOutputStream发送该文件.

上面的代码解释了我所拥有的部分.任何帮助赞赏.提前致谢.

// This Creates a file
//
String   text = "These days run away like horses over the hill";
File     file = new File("MyFile.txt");
Writer writer = new BufferedWriter(new FileWriter(file));
writer.write(text);
writer.close();

// Missing link goes here
//

// This sends file to browser
//
InputStream inputStream = null;
inputStream = new FileInputStream("C:\\MyFile.txt");

byte[] buffer = new byte[8192];
ByteArrayOutputStream baos = new ByteArrayOutputStream();

int bytesRead;
while (  (bytesRead = inputStream.read(buffer)) != -1)
   baos.write(buffer, 0, bytesRead);

response.setContentType("text/html");
response.addHeader("Content-Disposition", "attachment; filename=Invoice.txt");

byte[] outBuf = baos.toByteArray();
stream = response.getOutputStream();
stream.write(outBuf);
Run Code Online (Sandbox Code Playgroud)

Ste*_*lph 15

您不需要保存文件,只需使用ByteArray流,尝试这样的事情:

inputStream = new ByteArrayInputStream(text.getBytes());

或者,更简单,只需:

stream.write(text.getBytes());

正如cHao建议的那样,使用text.getBytes("UTF-8")或类似的东西来指定除系统默认值之外的字符集.Charset的API文档中提供了可用字符集列表.

  • 例如,指定编码,当然是......`text.getBytes("UTF-8")`. (2认同)