我在ByteArrayOutputStream变量中有3个文件的数据。但是,当我尝试通过BufferedOutputStream传递数据时,它只会发送最后一个文件的数据。
byte [] finalData = new byte[64000];
finalData = outputStream.toByteArray();
output.write(finalData, 0, finalData.length);
它将以某种方式覆盖2个文件的先前数据。
答案 0 :(得分:0)
ByteArrayOutputStream变量。但是当我尝试通过BufferedOutputStream传递它时
我建议直接将文件写入BufferedOutputStream以减少内存副本。
它仅发送最后一个文件的数据。
最有可能反复打开和关闭文件,每次都覆盖文件。您可以附加到文件,但是最有效的方法是直接写入文件。
注意:要读取文件,您需要某种方法来确定文件的开始和结束位置。一种方法是将索引写入文件的末尾(例如,就像ZIP一样)或写入具有偏移量的第二个文件,或将长度写入附加消息的开头。 如果是文本格式,则可能有另一种方法来确定起点/终点。