关于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垃圾回收。
------解决方案--------------------