我正在开发 Spring Boot 应用程序,该应用程序需要通过 REST API 将 apache poi 工作簿文档创建的工作簿发送到客户端,虽然我能够发送它,但我想知道通过网络发送文件的有效方法。
我将文件写入磁盘并将文件发送到客户端,API 完成,但现在我必须有额外的代码来删除这些陈旧的文件,所以我决定采用第二种方法
在 ByteArrayOutputStream 中写入文件,然后通过字节数组创建 spring 资源,它会发送文件而不将文件写入磁盘,问题就解决了。
但后来我发现很多链接讨论 ByteArrayOutputStream 的效率和内存问题,比如这个 -->。 堆栈溢出
正如其中一个答案所解释的那样,BufferedReader 比 ByteArrayOutputStream 更有效地写入文件,所以我想出了下面的代码。
ByteArrayOutputStream byteOut= new ByteArrayOutputStream();
BufferedOutputStream bufOut = new BufferedOutputStream(bos);
String content = "lets imagin huge amount of data";
bufOut.write(content.getBytes());
bufOut.flush();
bufOut.close();
bos.close();
System.out.println(new String(byteOut.toByteArray()));
我可以在没有 BufferedOutputStream 的情况下直接在 ByteArrayOutputStream 上写入,但我正在考虑写入缓冲数据而不是逐字节写入的效率。
上面的代码在给定情况下使用是否正确?