黑马程序员技术交流社区

标题: 一个IO缓冲区的问题? [打印本页]

作者: 严明    时间: 2012-6-25 13:41
标题: 一个IO缓冲区的问题?
用字符流读取文件时,
BufferedWiter bufw =  new BufferedWriter (new FileWriter("demo.txt"));
我知道BufferedWiter不能直接打开文件,它只能给已经打开的文件写入缓冲流
但是可不可以这样:
BufferedWiter bufw =  new BufferedWriter (new File("demo.txt"));
还有一点:
BufferedReader中有一个方法readLine()读取一个文本行,为什么BufferedWriter中没有对应的写入一个文本行的方法?如果想一次写入一个文本行 的效果,怎样实现呢?


作者: 张立江    时间: 2012-6-25 14:01
本帖最后由 小张童鞋 于 2012-6-25 14:04 编辑

首先,读取功能是Reader和InputStream 才拥有的,写和输出是Writer和OutputStream,你概念搞错了
2,
BufferedWiter bufw =  new BufferedWriter (new FileWriter("demo.txt"));
这句话的意思是将文件demo.txt放进一个输出流里面,再用BufferedReader或者BufferedInputStream来装饰它,进行功能强化.而你的
BufferedWiter bufw =  new BufferedWriter (new File("demo.txt"));
新建了个一个文件demo.txt,还没有放进读取流里面就直接用Buffered来装饰了,这显示是不对的.
3,你的第二个问题,调用flush()方法就搞定了.

作者: 李海晓    时间: 2012-6-25 14:06
new BufferedWriter (new File("demo.txt"));,不可以,应为 BufferedWriter 需要传入一个字符输出流。
而 ;new File("demo.txt"))只是创建了一个文件和目录的对象。
BufferedWrite 的write方法可以写入一个字符串,
当readLine方法读出一行时,write方法,可以一次写入

作者: 严明    时间: 2012-6-25 15:05
小张童鞋 发表于 2012-6-25 14:01
首先,读取功能是Reader和InputStream 才拥有的,写和输出是Writer和OutputStream,你概念搞错了
2,
BufferedW ...

Think you!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2