在 Java 中关闭流

2022-08-31 20:24:51

为什么在离开程序之前,我们需要在任何情况下关闭FileInputStream(以及一般的流)?否则会发生什么?如果程序在程序中显式关闭输入流之前停止,流不是也会自动关闭吗?


答案 1

文件句柄是稀缺的、有限的资源。如果您没有正确清理它们,就像数据库连接一样,您可能会用完它们。

如果你只写了一个用户的小程序,你可以侥幸逃脱,而不是在最终的块中关闭。

但是,如果您最终在具有许多用户和文件句柄的应用程序中使用该习语,则可能会遇到问题。

“首先我们养成习惯,然后他们造就我们。我试图应用最佳实践,即使它们不是必需的。


答案 2

是的,当进程终止时,将释放非托管资源。对于输入流,这很好。对于 OutputStreams,您可能会丢失缓冲数据,因此至少应该在退出程序之前刷新流。


推荐