DataOutputStream在其缓冲区已满时是否自动刷新?

时间:2011-10-09 10:23:28

标签: java file-io

我正在通过DataOutputStream(RandomAccessFile-> FileOutputStream-> BufferedOutputStream-> DataOutputStream)将信息写入文件。

我假设如果填充了用于数据输出的缓冲区,那么dataoutput流会自动刷新吗?

我问的原因是我在for循环中写入数据,并在循环之后刷新(我猜测在循环的每次迭代之后刷新会破坏使用缓冲区的点),并且当数据太大(4MB atm)我的文件输出不正确。

1 个答案:

答案 0 :(得分:3)

DataOutputStream没有缓冲区,因此无需刷新。一切都是在write()/writeXXX()方法中编写的。但是BufferedOutputStream当然有一个缓冲区,所以你当然需要刷新或关闭才能将数据写入文件。您需要关闭最外面的流,即在这种情况下是DataOutputStream,而不是任何嵌套流。

  

当数据太大(4MB atm)时,我的文件没有出来   正确。

您必须发布您的代码。 BufferedOutputStream的缓冲区默认为8k字节,与4Mb无关。