Java,有没有办法使用 servlet 输出流而不是覆盖来附加字节数组?
Java, is there a way to append byte array using servlet outputstream instead of overwrite?
各位。我是用apache poi生成excel格式的文件,我没有把它存到我的磁盘上,只是字节数组,然后我用outputstream把字节数组写到客户端,这样客户端就可以下载excel 文件。像这样:
OutputStream outputStream = response.getOutputStream();
byte[] fileData = generateDownloadFile(paramters);
outputStream.write(temp);
outputStream.flush();
但是,我想知道是否存在一种方法可以将字节数组附加到客户端而不是一次写入,这样我就可以生成一些字节数组然后刷新它们,然后生成一些字节数组并刷新它们,然后最后关闭连接。如果使用 outputstream 的 write 方法执行此操作,则后者会覆盖前者。
为什么我需要这个?我只想在短时间内将一些东西发送回客户端,如果我生成整个 excel 文件字节数组,然后将其刷新回,连接可能已经关闭并导致 504 错误。
我试过:
- append PrintWriter 中的方法 class。但它没有用,因为我需要发送 byte 而不是 character,我无法通过 PrintWriter 使用 MSExcel 打开文件。
- 我也试过使用socket。但是socket还是需要使用outputstream,比如
new Socket().getOutputStream();
.
我是Java方面的专家,甚至不熟悉。任何人都可以帮忙弄清楚吗?
谢谢
输出有一个 write 方法来添加带有偏移量的字节:
outputstream.write(bytes, alreadySentSizeInBytes,
bytes.length);
请检查这是否有效
各位。我是用apache poi生成excel格式的文件,我没有把它存到我的磁盘上,只是字节数组,然后我用outputstream把字节数组写到客户端,这样客户端就可以下载excel 文件。像这样:
OutputStream outputStream = response.getOutputStream();
byte[] fileData = generateDownloadFile(paramters);
outputStream.write(temp);
outputStream.flush();
但是,我想知道是否存在一种方法可以将字节数组附加到客户端而不是一次写入,这样我就可以生成一些字节数组然后刷新它们,然后生成一些字节数组并刷新它们,然后最后关闭连接。如果使用 outputstream 的 write 方法执行此操作,则后者会覆盖前者。
为什么我需要这个?我只想在短时间内将一些东西发送回客户端,如果我生成整个 excel 文件字节数组,然后将其刷新回,连接可能已经关闭并导致 504 错误。
我试过:
- append PrintWriter 中的方法 class。但它没有用,因为我需要发送 byte 而不是 character,我无法通过 PrintWriter 使用 MSExcel 打开文件。
- 我也试过使用socket。但是socket还是需要使用outputstream,比如
new Socket().getOutputStream();
.
我是Java方面的专家,甚至不熟悉。任何人都可以帮忙弄清楚吗? 谢谢
输出有一个 write 方法来添加带有偏移量的字节:
outputstream.write(bytes, alreadySentSizeInBytes,
bytes.length);
请检查这是否有效