有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

各位。我使用ApachePOI生成excel格式的文件,我没有将其存储在磁盘上,只存储了字节数组,然后我使用outputstream将字节数组写入客户端,以便客户端可以下载excel文件。大概是这样的:

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

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

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

我试过:

  • PrintWriter类中的append方法。但它不起作用,因为我需要发送字节而不是字符,所以通过PrintWriter时无法使用MSExcel打开文件
  • 我还尝试使用socket。但是socket仍然需要使用outputstream,比如new Socket().getOutputStream();

我是Java方面的专家,甚至不熟悉。有人能帮我弄清楚吗? 谢谢


共 (1) 个答案

  1. # 1 楼答案

    Output有一种写入方法,可以添加带有偏移量的字节:

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

    请检查这是否有效