io流不关闭会怎么样,java io流

1 , java io流将“属性文件的名字”作为一个字符流放入到输入流is中;流就是一个管道,一个将数据变成计算机可识别的0或1
2,IO流操作中创建的流对象为什么一定close因为你不调用close()函数就会造成资源的浪费,流对象占用的资源不会自动的被回收,所以要手动的关闭然后再次利用这些资源,否则程序大的话就会出现资源占用率过高运行速度慢等问题
3 , java中IO流操作怎样关闭流in=null时的意思就是说流还没有被初始化时就报异常了,此时流为空值 。对于空值的流是不能关闭的,否则会出空指针异常 。所以之前要判断一下 。如果 in == null,就说明 in这个引用所指向的对象还没有被创建,自然 in.close()也就不可能被执行,而且会报异常 。我是这样想的,程序中 如果你先声明变量 InputStream(或者其他流类型) in = null;然后执行其他语句,再 in = new 、、、、在in new之前其他语句出exception,这时流没有被打开,也就无需关闭,如果不判断if(null != in) 硬要关闭in就出exception另外你的代码按如下写会更合理: if(null != in)tryin.flush();in.close();in = null;}catch(IOExection e)}如果 in == null , 就说明 in这个引用所指向的对象还没有被创建,自然 in.close()也就不可能被执行,而且会报异常 。我是这样想的,程序中 如果你先声明变量 InputStream(或者其他流类型) in = null;然后执行其他语句,再 in = new 、、、、在in new之前其他语句出exception,这时流没有被打开 , 也就无需关闭 , 如果不判断if(null != in) 硬要关闭in就出exception另外你的代码按如下写会更合理: if(null != in)tryin.flush();in.close();in = null;}catch(IOExection e)}如下例子代码:fileinputstream is = new fileinputstream(".");bufferedinputstream bis = new bufferedinputstream(is);bis.close();从设计模式上看:java.io.bufferedinputstream是java.io.inputstream的装饰类 。bufferedinputstream装饰一个 inputstream 使之具有缓冲功能,is要关闭只需要调用最终被装饰出的对象的 close()方法即可,因为它最终会调用真正数据源对象的 close()方法 。bufferedinputstream的close方法中对inputstream进行了关闭 , 下面是jdk中附带的源代码: java.io.bufferedinputstream的api:closepublic void close()throws ioexception 关闭此输入流并释放与该流关联的所有系统资源 。因此,可以只调用外层流的close方法关闭其装饰的内层流,验证例子:public static void main(string[] args) throws exceptionfileoutputstream fos = new fileoutputstream("d:\\a.txt");outputstreamwriter osw = new outputstreamwriter(fos, "utf-8");bufferedwriter bw = new bufferedwriter(osw);bw.write("java io close test");bw.close();}验证ok有 相关方法关闭 如:FileOutputStream out = new FileOutputStream操作完成后out.close调用流的close();方法关闭【io流不关闭会怎么样,java io流】

    推荐阅读