当前位置:首页 » 编程语言 » java关闭流

java关闭流

发布时间: 2024-08-10 18:31:49

⑴ 为什么在java中打开流后一定要关闭流好像关不关没有不同,程序的结果都是一样的。。。

这跟资源的占用有关
比如你将一个100MB的word文档转换成流,然后进行分析存储数据库一样
它是将这100MB的东西读到内存,然后进行处理,如果你在使用的时候不关闭
那么java就认为你是一直在使用
而不进行垃圾回收
那么就占你100MB的内存
这样有可能导致内存溢出

⑵ Java中为什么先关闭输出流后关闭输入流

不绝对,要看依赖关系,先关被依赖的流,谁是被依赖的,就先关谁,比如代码中从文件A读出内容,然后写入文件B , 这个时候读A 要用输入流 ,往B写要用输出流,必须要先从A读出,然后才能往B写,所以,这个场景下,输出流 依赖 输入流,操作完关流的时候就要先关被依赖的输入流,再关输出流。
还有,如果关流操作在finally块中进行,顺序就无所谓了。
如果输入流和输出流完全没有依赖关系,那关流顺序就更没关系了,看心情就好。

⑶ Java IO流中先关闭输出流还是先关闭输入流为什么

java中需要手动释放的资源常见的有以下两个:

  1. 流相关资源

    流相关资源一般遵循:

    1)先开后关,先开的输入流,再开的输出流,通过读取输入流写入输出流中,那么应该先关输出流,再关输入流,但是一般关闭输入输出流操作都是在读写完成后的finally中执行的,所以即使先关输入流,再关输出流也不会任何问题,因为读写操作没有进行了。

    2)先关外层,再关内层。如BufferedInputStream包装了一个FileInputStream,那么先

    关BufferedInputStream,再关FileInputStream。但要注意的是由于一般处理流持有节点流引用,处理流都会在自己的close方法中去关闭节点流,因此我们只要关闭外层的处理流即可,如果多此一举的关闭节点流反而会报错。如BufferedInputStream包装了FileInputStream,我们只要关闭BufferedInputStream即可

    3)只关处理流,不关节点流,原因见上述第二条

    流相关文章参考:http://blog.csdn.net/u012250875/article/details/78341874

  2. jdbc相关资源

    Connection,PrepareStatement,ResultSet三个资源。这三个资源的获取顺序是:

    先获得一个jdbc连接对象Connection,再通过连接对象获得一个sql预处理对象PrepareStatement,如果是查询的话最后还会通过PrepareStatement对象获取一个结果集ResultSet对象,关闭顺序与获取顺序正好相反。先关ResultSet,再关PrepareStatement,最后关Connection。

热点内容
我的世界服务器被破坏了怎么恢复 发布:2024-11-25 18:27:57 浏览:329
日常电瓶叉车配置有哪些 发布:2024-11-25 18:21:17 浏览:361
java的二分查找 发布:2024-11-25 18:21:11 浏览:23
买帕萨特选哪个配置 发布:2024-11-25 18:17:23 浏览:224
编程很挣钱吗 发布:2024-11-25 18:13:43 浏览:935
接受btc支付的香港云服务器 发布:2024-11-25 18:02:09 浏览:909
华为手机怎么密码解锁 发布:2024-11-25 17:56:34 浏览:938
服务器管理员怎么编辑别人背包 发布:2024-11-25 17:55:45 浏览:930
plc编程T 发布:2024-11-25 17:55:02 浏览:268
数据库年薪 发布:2024-11-25 17:51:18 浏览:666