黑马程序员技术交流社区
标题:
IO流
[打印本页]
作者:
HM何伟
时间:
2013-4-16 21:05
标题:
IO流
我咋感觉IO中,关闭流对象close()和输入流中的flush()方法不起什么作用啊,有它们,和没有它们一个样,能给一实例,说明没它们会出现什么异常情况?
作者:
殇_心。
时间:
2013-4-16 21:13
异常倒是不会出现。
close方法是关闭流对象,用来节约资源。
你现在是个小程序,关不关没多大关系,但如果多了就... 你懂的。
flush方法是用来刷新的,时刻把数据存入到内存中。
如果你突然崩一下,停电了,这时候flush大用来了。
如果不用它,你的数据是不是没保存(你正在写的数据)。
作者:
PANZERLEADER
时间:
2013-4-16 21:27
public static void main(String[] args) {
try {
//在D盘新建一个文本文件,里面随便写点东西
Reader r= new FileReader("D:\\a.txt");
BufferedReader br = new BufferedReader(r);
//这里在D盘下新建个文件,等下可以去D盘下查证结果。
Writer w = new FileWriter("D:\\b.txt");
BufferedWriter bw = new BufferedWriter(w);
char[] buf =new char[4];
//这里开始读字符串
while(br.read(buf)!=-1){
//这里往字符串里写数据
bw.write(buf);
}
/*
* 如果循环结束后不执行关闭流的操作,会发现数据并没被写到文件里。
* 如果加上关闭流的操作,数据会被写进文件里。
* close()方法中包含了flush()方法,也就是说,关闭流前会自动刷新一次
*/
bw.close();
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
复制代码
总结下:如果不关闭流,数据就不会被写进文件。
作者:
王龙
时间:
2013-4-16 21:50
只要用到缓冲区,就要记得刷新,把这句记住,就O了
作者:
梁志兵
时间:
2013-4-16 22:29
因为数据最基本的单位是字节,数据在缓冲区,需要刷新才会写入.
close():刷新缓冲区,释放资源。流对象不可以继续使用。
flush():刷新缓冲区,流对象还可以继续使用。
作者:
陈丽莉
时间:
2013-4-16 23:30
flush()方法可以刷新数据,将缓存中的刷新到指定文件中去,刷新后文件流仍可使用;
close()方法也有刷新的作用,刷新后关闭文件,所以close后不能再使用该文件流了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2