本文目录一览:
- 1、java;怎么关闭流文件?
- 2、java程序中的流都要统统关闭吗?有没有先后顺序??
- 3、Java IO流中先关闭输出流还是先关闭输入流?为什么?
- 4、java关闭流的顺序影响程序结果
- 5、java中IO流操作怎样关闭流
java;怎么关闭流文件?
最好声明在一个特定的作用域里面,这样作用域一到自己就释放掉了,也就不存在什么你来关闭了,因为很多内置类析构函数都是有很完整的系统垃圾回收机制。不要做重复的事,当然如果你需要关闭之后在打开,你可以使用手动关闭。
java程序中的流都要统统关闭吗?有没有先后顺序??
理论上都得关闭,流就是把硬盘上的东西放到内存上,不关就会浪费资源
关当然有先后顺序,我找了点解释:
一般情况下是:先打开的后关闭,后打开的先关闭
另一种情况:看依赖关系,如果流a依赖流b,应该先关闭流a,再关闭流b
例如处理流a依赖节点流b,应该先关闭处理流a,再关闭节点流b
当然完全可以只关闭处理流,不用关闭节点流。处理流关闭的时候,会调用其处理的节点流的关闭方法
如果将节点流关闭以后再关闭处理流,会抛出IO异常
Java IO流中先关闭输出流还是先关闭输入流?为什么?
java中需要手动释放的资源常见的有以下两个:
流相关资源
流相关资源一般遵循:
1)先开后关,先开的输入流,再开的输出流,通过读取输入流写入输出流中,那么应该先关输出流,再关输入流,但是一般关闭输入输出流操作都是在读写完成后的finally中执行的,所以即使先关输入流,再关输出流也不会任何问题,因为读写操作没有进行了。
2)先关外层,再关内层。如BufferedInputStream包装了一个FileInputStream,那么先
关BufferedInputStream,再关FileInputStream。但要注意的是由于一般处理流持有节点流引用,处理流都会在自己的close方法中去关闭节点流,因此我们只要关闭外层的处理流即可,如果多此一举的关闭节点流反而会报错。如BufferedInputStream包装了FileInputStream,我们只要关闭BufferedInputStream即可
3)只关处理流,不关节点流,原因见上述第二条
流相关文章参考:
jdbc相关资源
Connection,PrepareStatement,ResultSet三个资源。这三个资源的获取顺序是:
先获得一个jdbc连接对象Connection,再通过连接对象获得一个sql预处理对象PrepareStatement,如果是查询的话最后还会通过PrepareStatement对象获取一个结果集ResultSet对象,关闭顺序与获取顺序正好相反。先关ResultSet,再关PrepareStatement,最后关Connection。
java关闭流的顺序影响程序结果
bw是缓冲流,使用bw.write 后,数据并没有直接写入txt文件中,而是在bw的缓冲区内,所以这时先关闭输出流fw,则txt中就是空的了,如果先关闭bw,则缓冲流会在内部先调用bw.flush();将缓冲区的内容输出到文件中,所以txt才有内容。要解决这个问题,需要在bw.write 后显示调用bw.flush();这样先关闭那个流都一样了
java中IO流操作怎样关闭流
in=null时的意思就是说流还没有被初始化时就报异常了,此时流为空值。对于空值的流是不能关闭的,否则会出空指针异常。所以之前要判断一下。