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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥在java中打开流后一定要关闭流??好像关不关没有不同,程序的结果都是一样的。。。相关的知识,希望对你有一定的参考价值。

这跟资源的占用有关
比如你将一个100MB的word文档转换成流,然后进行分析存储到数据库一样
它是将这100MB的东西读到内存,然后进行处理,如果你在使用的时候不关闭
那么java就认为你是一直在使用
而不进行垃圾回收
那么就占你100MB的内存
这样有可能导致内存溢出
参考技术A 比如你写一个程序,然后你不关闭连接,那么他就会占据一个资源,久而久之你写的程序跑起来就慢了。而这个连接数是有限的,当达到一个上限以后,java的IO就没法使用了。所以编程要养成良好的习惯。在处理完之后加一个close()方法 参考技术B 举个简单例子,你打开写入文件等,如果你用流打开了文件,写入文件后,你没有关闭文件,在程序执行完后,你想删除文件不删不掉的。。 参考技术C 流不关资源占着内存,你一个小的程序感觉不出来,要是好多流都不关,就会导致死机,内存泄流!建议培养良好的编码意识,一个小的程序也要吧流关了 参考技术D 你每次都不关闭的话会无限的增加内存负担~到一定程度 系统不就因内存不足而崩溃了么~

java;怎么关闭流文件?

BufferedReader br = new
BufferedReader(new InputStreamReader(new FileInputStream(filePath_In)));

用 while ((line = br.readLine())!= null)读取文件时,中途想关闭这个文件,从头开始读取怎么操作?
close好像不行啊Exception in thread "main" java.io.IOException: Stream closed
at java.io.BufferedReader.ensureOpen(BufferedReader.java:97)
at java.io.BufferedReader.readLine(BufferedReader.java:292)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at OpenWeb.main(OpenWeb.java:49)

参考技术A 最好声明在一个特定的作用域里面,这样作用域一到自己就释放掉了,也就不存在什么你来关闭了,因为很多内置类析构函数都是有很完整的系统垃圾回收机制。不要做重复的事,当然如果你需要关闭之后在打开,你可以使用手动关闭。 参考技术B close()方法会抛出异常的,你需要处理一下

public static void main(String[] args) throws IOException

.......

br.close()本回答被提问者采纳
参考技术C 中途关闭??

那你就在你能确定到中途的地方加上br.Close();外面加上try--catch 语句块来捕捉异常~

路过!~

以上是关于为啥在java中打开流后一定要关闭流??好像关不关没有不同,程序的结果都是一样的。。。的主要内容,如果未能解决你的问题,请参考以下文章

socket 如果不关闭会自动关闭吗?为啥要心跳连接?

java程序中的流都要统统关闭吗?有没有先后顺序??

为啥 window.location.search 为空

ipad悬浮球蓝牙为啥关不掉

java中文件打开和关闭的问题

Java socket中关闭IO流后,发生啥事