当我不关闭流时会发生什么不好的事情?
关闭操作会自动刷新吗?
程序退出后是否关闭了所有流?
提前致谢。
答案 0 :(得分:7)
不关闭流时可能发生的坏事:
是的,关闭操作总是刷新流。
操作系统知道的所有文件句柄都已关闭。这意味着有效地FileOutputStream
,FileInputStream
和Socket
的输入/输出将被关闭。但是如果你将FileOutputStream
包裹在BufferedOutputStream
中,那么BufferedOutputStream
将不为操作系统所知,将不会关机时关闭/冲洗。因此,写入BufferedOutputStream
但尚未刷新到FileOutputStream
的数据可能会丢失。
答案 1 :(得分:3)
1)您不必要地占用系统资源(例如文件描述符)。可能会耗尽它们。
2)是(尽管您应该检查您感兴趣的特定流的文档)。
3)是的
答案 2 :(得分:1)
要限定,当您执行close()时,它会刷新数据并关闭文件句柄。如果退出,则文件句柄将关闭,但未刷新的数据将丢失。