黑马程序员技术交流社区
标题:
IO流中抛出异常的问题
[打印本页]
作者:
周昭民
时间:
2014-2-13 15:42
标题:
IO流中抛出异常的问题
import java.io.*;
class BufferedWriterDemo
{
public static void main(String[] args)
{
//声明一个写入流
Writer wt=null;
//声明一个缓冲区
BufferedWriter bfwt=null;
try
{
//创建字符写入流对象
wt=new FileWriter("haha.txt");
//只要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数集合
bfwt=new BufferedWriter(wt);
/*
BufferedWriter(Writer out)
创建一个使用默认大小输出缓冲区的缓冲字符输出流。
*/
bfwt.write("heheehe,haolenga");
//写入一个换行符
bfwt.newLine();
/*
void newLine()
写入一个行分隔符。
*/
//记住。这时只要刷新缓冲区即可
bfwt.flush();
bfwt.write("呵呵呵,好冷啊");
bfwt.flush();
}
catch (IOException e)
{
System.out.println(e.toString());
}
finally{
try
{
if(bfwt!=null)
bfwt.close();//其实关闭缓冲区,就是在关闭缓冲区中的流对象
}
catch (IOException e)
{
System.out.println(e.toString());
}
}
}
}
复制代码
毕老师说只要把缓冲区关闭,就是在关闭缓冲区中流的对象,这点我是理解的。但是我突然想到一个问题,当我创建一个Writer流后,我在创建缓冲区的时候不小心把参数写错了,比如一个字母。这时抛出了异常。
而finally代码块执行,但我并没有成功创建缓冲区,因为没有缓冲区对象,所以不用关闭缓冲区。可是我的Writer流还没关闭资源呢。
这样说的话,我用不用再finally代码块里多加一个关闭Writer流的方法?
求解,我这样分析是对的还是错的
作者:
毛羚杨
时间:
2014-2-13 16:02
这个简单你可以再finally代码开中直接关闭Writer流,因为缓冲区和这个Writer流是关联着的 你只要关闭了Writer流就可以了吧应该,本人愚见 哈哈
作者:
自由自在2014
时间:
2014-2-13 17:03
你写错参数 编译好像无法通过 你试一下
作者:
周昭民
时间:
2014-2-13 17:48
自由自在2014 发表于 2014-2-13 17:03
你写错参数 编译好像无法通过 你试一下
不会啊,我复制了再去编译也没错。你没导包还是没改类名吧?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2