发布网友 发布时间:2022-04-30 03:00
共3个回答
热心网友 时间:2023-10-09 04:33
IO 流除了可以手动关闭外,在垃圾回收这个对象的时候也会自动关闭。追答表面上是 "网上好多人写的JDBC工具类",实际上是几个人写了,然后一大堆人复制粘贴。
如果不关闭 FileInputStream,在学习或者练习项目用用也没什么问题。真实项目肯定不允许这样写的。
在一个 FileInputStream 不关闭的情况下,另一个 FileInputStream 也是可以读这个文件的,再说配置文件也基本只有一个流会去读。并且 fis 作为 static 块里的临时变量,执行完后,是可以被 GC 的。所以即使你不关闭流,项目也确实可以正常运行。
但是,如果你打开 1000、10000 个 FileInputStream,就会造成系统资源的严重浪费。
除非是写 try(FileInputStream xxx ....) 这样的,可以在 try 执行完后自动关闭。还有一些工具类,使用完流后会自动关闭流。不然就需要手动调用 close()。
你也可以试下,执行完 static 后,流并未被关闭。
热心网友 时间:2023-10-09 04:34
不用想,资源是一定要关闭的,不然会一直存在到程序结束,除了占用资源,还容易发生异常,比如有些输出流,你不关闭,文件是不会更新的。热心网友 时间:2023-10-09 04:34
不管你是类变量还是实例变量,都需要关闭啊