黑马程序员技术交流社区
标题:
关于关闭流对象时 条件判断问题
[打印本页]
作者:
任献东
时间:
2014-10-15 19:03
标题:
关于关闭流对象时 条件判断问题
package 黑马练习;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileReader_Writer_Demo {
public static void main(String[] args) {
BufferedReader bufr = null;
BufferedWriter bufw = null;
try {
bufr = new BufferedReader(new FileReader("Test.txt"));
bufw = new BufferedWriter(new FileWriter("Test_copy.txt"));
String line = null;
while((line=bufr.readLine())!=null){
bufw.write(line);
bufw.newLine();
bufw.flush();
}
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
finally{
try {
if(bufw!= null){//不理解 为什么是bufw!=null?不是应该如果缓冲区为空时就关闭么?
bufw.close();
}
} catch (IOException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
try {
if(bufr!= null){
bufr.close();
}
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
}
复制代码
关闭流的条件判断 不是应该如果缓冲区为空时就关闭么 为什么是bufw!=null
作者:
dreamseekerkun
时间:
2014-10-15 19:11
为空时,说明没有调用底层资源,还关他干啥,只有不为空时才关闭的。记不很大清楚了,老毕视频里有讲,你再看下
作者:
付江涛
时间:
2014-10-15 20:06
包名竟然是汉字{:3_55:}
作者:
Eric1225
时间:
2014-10-15 20:16
无论是否异常都要close(),为了防止实例化流对象失败,所以这里要判断一下再关闭,close()之前会自动刷新缓存
作者:
九零零
时间:
2014-10-15 20:37
只是为了防止出现空指针异常,如果bufr==null,bufr.close()会出异常。缓冲区关闭的是流资源
作者:
hollywood2014
时间:
2014-10-15 21:05
兄弟, flush()是这么定义的:通过将所有已缓冲输出写入底层流来刷新此流。要是缓冲区为空了,那说明该流已经被关闭了
作者:
郭.威
时间:
2014-10-16 02:34
果bufr==null,bufr.close()会出异常
作者:
HM2014nuli
时间:
2014-10-16 07:50
不为null时,说明他还消耗着资源,所以需要把它关掉,为空时,则相反
作者:
zhappy
时间:
2014-10-16 08:28
空指针就不用关了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2