Java,有没有一种方法可以使用servlet outputstream附加字节数组而不是覆盖?

时间:2018-10-24 04:28:56

标签: java arrays append outputstream http-status-code-504

每个人。我正在使用apache poi生成excel格式文件,我没有将其存储在磁盘上,而只是将字节数组存储在磁盘上,然后我使用outputstream将字节数组写入客户端,因此客户端可以下载excel文件。像这样:

OutputStream outputStream = response.getOutputStream();
byte[] fileData = generateDownloadFile(paramters);
outputStream.write(temp);
outputStream.flush();

但是,我想知道是否存在一种方法,可以将字节数组追加到客户端而不是一次写入,因此我可以生成一些字节数组,然后刷新它们,然后生成并刷新它们,最后关闭连接。如果使用outputstream的write方法执行此操作,则后者将覆盖前者。

为什么我需要这个?我只想在短时间内将某些内容发送回客户端,如果我生成整个excel文件字节数组,然后将其刷新回去,则连接可能已经关闭,并导致504错误。

我曾经尝试过:

    PrintWriter 类中的
  • 附加方法。但这没有用,因为我需要发送 byte 而不是 character ,因此在通过PrintWriter时无法使用MSExcel打开文件。
  • 我还尝试使用 socket 。但是套接字仍然需要使用输出流,例如new Socket().getOutputStream();

我是Java方面的专家,即使不熟悉。有人可以帮忙弄清楚吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

输出有一个写方法来添加带偏移量的字节:

   outputstream.write(bytes, alreadySentSizeInBytes, 
                                          bytes.length);

请检查是否可行