A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为什么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();

        }       
}

2 个回复

正序浏览
为什么PrintWriter的自动刷新功能只能用作于有换行标记的方法?
    因为PrintWriter其实就是一个装饰类,是对基本功能的装饰,为了在操作时提供更方便的方法,我们在自己使用基本类的时候进行操作刷新的时候,是人为控制的,一般会在循环写入的语句中写上flush()刷新语句,而JDK不是人的大脑啊,只能给他标记,让其刷新,所以就把刷新方法封装到了PrintWriter中,标记就是换行。
回复 使用道具 举报
看API文档的解释:
public PrintWriter(OutputStream out,
                   boolean autoFlush)通过现有的 OutputStream 创建新的 PrintWriter。此便捷构造方法创建必要的中间 OutputStreamWriter,后者使用默认字符编码将字符转换为字节。

参数:
out - 输出流
autoFlush - boolean 变量;如果为 true,则 println、printf 或 format 方法将刷新输出缓冲区

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马