黑马程序员技术交流社区
标题:
PrintWriter中是否有缓冲区?
[打印本页]
作者:
韦念欣
时间:
2012-7-1 22:56
标题:
PrintWriter中是否有缓冲区?
本帖最后由 韦念欣 于 2012-7-2 21:24 编辑
PrintWriter在打印数据的时候,有自动刷新功能,那里面是否封装了一个缓冲区呢?
作者:
Forever。
时间:
2012-7-1 23:22
本帖最后由 Forever。 于 2012-7-1 23:24 编辑
肯定有缓冲区的啊,字符流肯定都有缓冲区的,不然要他们怎么提高效率呢?调用flush方法可以将缓冲区中的东西强行输出。
outputstream就有这个flush这个方法 只不过他什么都没干,凡是继承Writer这个抽象类的肯定都对flush方法做了重写 因为他们都有缓冲这个东西。
作者:
黑马罗坚
时间:
2012-7-2 20:41
有 如果你构造时传入的不是字符流 它会帮你包装成bufferedWriter流 缓存一个8k的char数组 而我们知道buffered 流需要flush; 传入的是字符流的话 它不会帮你包装 你传入的是什么就是什么 字符流底层调用的是StreamEncoder StreamEncoder里面有个缓存 写的东西都写进了StreamEncoder的缓存里面去了 所以你要调用flush刷新缓存 你如果在构造函数里指定了自动刷新 调用3个指定的刷新缓存的方法时 掉完了StreamEncoder的wrtie写数据到缓存后 会在调用StreamEncoder。flush();刷新缓存里的数据
作者:
韦念欣
时间:
2012-7-2 21:24
nailsoul 发表于 2012-7-2 20:41
有 如果你构造时传入的不是字符流 它会帮你包装成bufferedWriter流 缓存一个8k的char数组 而我们知道buff ...
原来是这样,谢谢啦!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2