- 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流的方法?
求解,我这样分析是对的还是错的
|