在我们离开程序之前,为什么我们需要在任何情况下关闭FileInputStream(和一般的流)?否则会发生什么?如果程序在程序中明确关闭输入流之前停止,则流是否也会自动关闭?
duf*_*ymo 45
文件句柄是稀缺的,有限的资源.如果你没有正确清理它们,就像数据库连接一样,你可以用完它们.
如果你只用一个用户编写了一个小程序,那么你就可以邋in而不是在finally块中关闭.
但是,如果您最终在具有许多用户和文件句柄的应用程序中使用该习惯用法,则可能会出现问题.
"首先,我们养成了习惯,然后才能养成我们." 即使没有必要,我也尝试应用最佳实践.
Jon*_*eet 36
是的,当进程终止时,将释放非托管资源.对于InputStreams,这很好.对于OutputStreams,您可能会丢失缓冲数据,因此在退出程序之前至少应该刷新流.
Don*_*son 25
多德.如果不关闭流,则单元测试将失败.或者至少,它应该.所以,这就是你需要关闭它的原因.;)
虽然如果你只是退出操作系统几乎肯定会清理,但如果你明确关闭它们,它们通常会更快地释放.如果你的代码最终会在一个长期运行的程序中结束,那该怎么办呢?然后他们会有问题并诅咒你.:(
所以,就像在洗手间后洗手一样.最终,如果你不这样做,有人会付出代价.你可以暂时使用它,但它仍然是一个很好的做法.