File io 为什么在使用文件后需要关闭它?

File io 为什么在使用文件后需要关闭它?,file-io,File Io,我从一本书中读到一个问题,上面说“如果操作系统在程序终止后关闭一个文件,为什么程序员需要手动关闭一个文件(即调用file.close())?” 我能想到的唯一原因是程序可能无法正确终止,因此文件可能仍处于打开状态,因此会消耗系统资源,因为文件保存在缓冲区中 还有其他原因吗 编辑:我想到了另一个原因。调用file.close()会迫使操作系统将尚未提交到该文件的任何更改刷新到磁盘。如果程序员手动关闭该文件,他们可以控制何时/如何释放资源 如果将其留给操作系统,您无法确定何时/是否会进行清理,这通常

我从一本书中读到一个问题,上面说“如果操作系统在程序终止后关闭一个文件,为什么程序员需要手动关闭一个文件(即调用
file.close()
)?”

我能想到的唯一原因是程序可能无法正确终止,因此文件可能仍处于打开状态,因此会消耗系统资源,因为文件保存在缓冲区中

还有其他原因吗


编辑:我想到了另一个原因。调用
file.close()
会迫使操作系统将尚未提交到该文件的任何更改刷新到磁盘。

如果程序员手动关闭该文件,他们可以控制何时/如何释放资源


如果将其留给操作系统,您无法确定何时/是否会进行清理,这通常也是一种不好的做法。

在某些情况下,程序会多次调用open,如果不再次发布文件描述符,它将耗尽文件描述符。

可能的重复: