0

我在 ByteArrayOutputStream 变量中有来自 3 个文件的数据。但是当我尝试通过 BufferedOutputStream 传递它时,它只发送最后一个文件的数据。

byte [] finalData = new byte[64000];
finalData = outputStream.toByteArray();     
output.write(finalData, 0, finalData.length);

它以某种方式覆盖了 2 个文件的先前数据。

4

1 回答 1

0

ByteArrayOutputStream 变量。但是当我尝试通过 BufferedOutputStream 传递它时

我建议将文件直接写入 BufferedOutputStream 以减少内存副本。

它只发送最后一个文件的数据。

最有可能重复打开和关闭文件,每次都覆盖文件。您可以附加到文件,但最有效的方法是直接写入文件。

注意:要读取文件,您需要某种方法来确定文件的开始和结束位置。一种方法是将索引写入文件末尾(例如,像 ZIP 那样)或写入具有偏移量的第二个文件,或将长度写入附加消息的开头。如果它是一种文本格式,您可能有另一种方法来确定一个开始/结束的位置。

于 2018-12-12T09:04:03.917 回答