关闭I / O流

时间:2011-03-01 13:23:34

标签: java stream io

当我不关闭流时会发生什么不好的事情?

关闭操作会自动刷新吗?

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

提前致谢。

3 个答案:

答案 0 :(得分:7)

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

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

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

操作系统知道的所有文件句柄都已关闭。这意味着有效地FileOutputStreamFileInputStreamSocket的输入/输出将被关闭。但是如果你将FileOutputStream包裹在BufferedOutputStream中,那么BufferedOutputStream为操作系统所知,将不会关机时关闭/冲洗。因此,写入BufferedOutputStream但尚未刷新到FileOutputStream的数据可能会丢失。

答案 1 :(得分:3)

1)您不必要地占用系统资源(例如文件描述符)。可能会耗尽它们。

2)是(尽管您应该检查您感兴趣的特定流的文档)。

3)是的

答案 2 :(得分:1)

要限定,当您执行close()时,它会刷新数据并关闭文件句柄。如果退出,则文件句柄将关闭,但未刷新的数据将丢失。

相关问题