PrintWriter pw = null;
try
{
pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream( "c:\\xyz.txt")), true);
}
catch (Exception e) {
} finally {
if (pw != null) {
pw.close();
pw = null;
}采用这种方法,里边嵌套 new FileOutputStream( "c:\\xyz.txt")) ,
打开了一个输出流,但FileOutputStream没有关闭,这样会不会有问题 ?
pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream( "c:\\xyz.txt")), true);
生命周期就已经结束了~~
在方法A() 定义一个FileOutputStream 类型变量,当作参数传给方法 B(FileOutputStream FO)
关闭动作,
是在方法A里,
还是方法B里,
还是方法A,B都执行关闭操作?
FileOutputStream被OutputStreamWriter装饰
OutputStreamWriter又被PrintWriter装饰
当调用pw.close()时,就会OutputStreamWriter的close(),
同样,OutputStreamWriter也会调用FileOutputStream的close();
这样就OK了
==========================================================================================
pw关闭的输出流,但是pw的输出流就是OutputStreamWriter
OutputStreamWriter里的输出流又是FileOutputStream
所以光了pw,就全部关闭了
还是一样在finallly块中做关闭
恩。同意。
另外,中间的FileOutputStream,如果你非的想关闭的话,怎么关闭呀?有没有实例名。呵呵
OutputStreamWriter又被PrintWriter装饰
当调用pw.close()时,就会OutputStreamWriter的close(),
同样,OutputStreamWriter也会调用FileOutputStream的close(); "
正解
关闭动作,
是在方法A里,
还是方法B里,
还是方法A,B都执行关闭操作?
------------------------------------------
引申一个问题,
java 里方法的参数的传递, 是把变量的 引用传递过去了,是不?