将ByteArray写入FileOutputStream与将ByteArray写入FileOutputStream?

时间:2019-04-16 09:55:46

标签: java arrays file memory-management bytearrayoutputstream

以下哪种方法在内存利用率和性能方面更有效:

  1. ByteArrayOutputStream写到FileOutputStream,即baos.writeTo(output);
  2. ByteArrayOutputStream转换为ByteArray,然后写入FileOutputStream,即output.write(baos.toByteArray());

我已经分析并发现第二种方法在写入文件时占用了更多内存,因为baos.toByteArray()创建了新分配的Byte数组。

请提出建议。您认为使用output.write(baos.toByteArray())有什么好处吗?

FileOutputStream output = new FileOutputStream(path);
ByteArrayOutputStream baos = getBaos(); 
baos.writeTo(output);
//output.write(baos.toByteArray());

1 个答案:

答案 0 :(得分:0)

writeTo将直接的内部缓冲区直接写入OUT(即FileOutputStream),而write(bao.toByteArray())花费的时间比writeTo花费的时间要多(据您正确分析的话)。