黑马程序员技术交流社区

标题: 为什么PrintWriter的自动刷新功能有限制? [打印本页]

作者: 李大强    时间: 2013-2-8 18:08
标题: 为什么PrintWriter的自动刷新功能有限制?
为什么PrintWriter的自动刷新功能只能用作于有换行标记的方法?
源代码如下:
import java.io.*;

class  PrintStreamDemo
{
        public static void main(String[] args) throws IOException
        {
                BufferedReader bufr =
                        new BufferedReader(new InputStreamReader(System.in));

                PrintWriter out = new PrintWriter(new FileWriter("a.txt"),true);//这时启用了自动刷新功能

                String line = null;

                while((line=bufr.readLine())!=null)
                {
                        if("over".equals(line))
                                break;
                        out.println(line.toUpperCase());//此方法可以完成自动刷新,但前提是必须携带有换行符的方法
                       
                }

                out.close();
                bufr.close();

        }       
}

作者: 黄基焜    时间: 2013-2-14 10:01
看API文档的解释:
public PrintWriter(OutputStream out,
                   boolean autoFlush)通过现有的 OutputStream 创建新的 PrintWriter。此便捷构造方法创建必要的中间 OutputStreamWriter,后者使用默认字符编码将字符转换为字节。

参数:
out - 输出流
autoFlush - boolean 变量;如果为 true,则 println、printf 或 format 方法将刷新输出缓冲区
作者: 郝强勇    时间: 2013-2-14 14:36
为什么PrintWriter的自动刷新功能只能用作于有换行标记的方法?
    因为PrintWriter其实就是一个装饰类,是对基本功能的装饰,为了在操作时提供更方便的方法,我们在自己使用基本类的时候进行操作刷新的时候,是人为控制的,一般会在循环写入的语句中写上flush()刷新语句,而JDK不是人的大脑啊,只能给他标记,让其刷新,所以就把刷新方法封装到了PrintWriter中,标记就是换行。




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