日期:2014-05-20  浏览次数:20780 次

关于IO的关闭和flush
在IO里面,要求每次读写完成的时候都要关闭,这样的话可以释放资源,那么下面的例子应该怎么释放呢:
Java code

Properties props = new Properties();
        props.load(new FileInputStream(new File(
                System.getProperty("user.dir") + File.separator + "resources"
                        + File.separator + "config.properties")));


为了简便的原因,我直接把相应的输入流写进了操作的里面,作为了一个匿名对象,
那么这样以后还有到关闭流吗,还是系统可以自动关闭,或者是只能把输入流分解出来,如果是我特别的要求,
按照下面的操作才能释放相应的资源,就是把这段代码拆开,这里面具体是什么样子运行的,或者是我说的哪里不对吗?
Java code

FileInputStream ips = new FileInputStream(new File(
                System.getProperty("user.dir") + File.separator + "resources"
                        + File.separator + "config.properties"));

        Properties props = new Properties();
        props.load(ips);
        ips.close();





------解决方案--------------------
所谓任何线程无法再通过任何方法访问此对象,通常指没有任何引用指向此对象。
如果是在你举的第一个例子中,这个对象作为参数传入 props.load()方法,而在别处没有引用(变量)指向它,则在load()方法执行结束之后,它就变成了没有任何引用指向的对象。之后会在某个时刻被JVM垃圾回收。
------解决方案--------------------
探讨

但是我看这个方法,如果我没有new出对象,不是一个引用的话就不能自动回收了是吧?