Java基础学习总结--IO流关闭
程序员文章站
2022-04-16 09:24:21
一、为什么java中io流必须关闭 当我们new一个java流对象之后,不仅在计算机内存中创建了一个相应类的实例对象。而且,还占用了相应的系统资源。在内存中的实例对象,当没有引用指向的时候,java垃圾收集器会按照相应的策略自动回收,但是却无法对系统资源进行释放。所以,我们需要主动调用close() ......
一、为什么java中io流必须关闭
当我们new一个java流对象之后,不仅在计算机内存中创建了一个相应类的实例对象。而且,还占用了相应的系统资源。在内存中的实例对象,当没有引用指向的时候,java垃圾收集器会按照相应的策略自动回收,但是却无法对系统资源进行释放。所以,我们需要主动调用close()方法释放java流对象。
二、释放资源的方法:
1、方法一:
file file = new file("f:/javapractice/io2/src/test"); fileinputstream is = null; try { is = new fileinputstream(file); byte[] flush = new byte[1024]; int len=0; while((len=is.read(flush)) != -1) { //此处一定要放实际的读取长度,否则会将flush数组中的非读取到的数据也输出,如:默认值0 system.out.print(new string(flush, 0, len)); } }catch(filenotfoundexception e) { e.printstacktrace(); }catch(ioexception e) { e.printstacktrace(); }finally { try { if(is != null) { is.close(); } }catch(ioexception e) { e.printstacktrace(); } }
2、方法二:
若需要关闭的流较多,可以利用closeable接口自己封装一个方法
public static void close(closeable... ios) { //其实此处应用的是多态原理 for(closeable io:ios) { try { if(io != null) { io.close(); } }catch(ioexception e) { e.printstacktrace(); } } }
补充:public static void close(closeable... ios),此处的三点并不是省略号,而是可变参数。
3、方法三:
在java7之后,可以使用try-with-resources语句来释放java流对象,从而避免了try-catch-finally语句的繁琐。
public static void copy(string srcpath, string destpath) { //创建源 file src = new file(srcpath); file dest = new file(destpath); //选择流 try(fileinputstream is = new fileinputstream(src); fileoutputstream os = new fileoutputstream(dest)) { //操作 byte[] flush = new byte[1024*2]; int len = 0; while((len=is.read(flush)) != -1) { os.write(flush, 0, len); } os.flush(); }catch(filenotfoundexception e) { e.printstacktrace(); }catch(ioexception e) { e.printstacktrace(); } }
java新手,若有错误,欢迎指正!
上一篇: 兄弟你老婆真不错,赞一个
推荐阅读
-
Java基础学习总结(129)——Arrays.asList得到的List进行add和remove等操作出现异常解析
-
Java基础--常用API--IO流相关API
-
J02-Java IO流总结二 《概述》
-
J03-Java IO流总结三 《 FileInoutStream和FileOutputStream 》
-
J04-Java IO流总结四 《 FileReader和FileWriter 》
-
J01-Java IO流总结一 《异常捕获》
-
Java零基础个人学习路线总结
-
J05-Java IO流总结五 《 BufferedInputStream和BufferedOutputStream 》
-
Java基础学习框架总结
-
J07-Java IO流总结七 《 InputStreamReader和OutputStreamWriter 》