关闭I/O流

sar*_*nan 3 java io stream

当我不关闭流时会发生什么坏事?

关闭操作是否会自动刷新?

程序退出后是否所有流都关闭了?

提前致谢.

Joa*_*uer 7

不关闭流时可能发生的坏事:

  • 你可以用完文件句柄
  • 您认为写入磁盘的数据可能仍在缓冲区中(仅限)
  • 其他进程可能仍会锁定文件(取决于平台)
  • ...

是的,关闭操作总是刷新流.

操作系统知道的所有文件句柄都将关闭.这有效地意味着FileOutputStream,FileInputStream并且Socket将关闭a的输入/输出.但是,如果你换一个FileOutputStreamBufferedOutputStream那么BufferedOutputStream不会是已知的操作系统,不会被关闭/刷新上关闭.因此写入BufferedOutputStream但尚未刷新的数据FileOutputStream可能会丢失.