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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小小太阳 中级黑马   /  2013-5-26 14:43  /  1894 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                 PrintWriter out = new PrintWriter(s.getOutputStream(),true);
        String line = null;
        while((line = bufr.readLine())!=null)
        {
                out.println(line);
        }
        //这里可以用PrintWriter来写,具体是什么原理,
        BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
        String line = null;
        while((line = bufr.readLine())!=null)
        {
                bufw.write(line);
                bufw.newLine();
                bufw.flush();
        }
这后者可以用前者来写,具体是什么原理,请高手解答

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

4 个回复

倒序浏览
看下api 就会很清楚了
PrintWriter(OutputStream out, boolean autoFlush)
          通过现有的 OutputStream 创建新的 PrintWriter。

PrintWriter 会使用默认的编码把字符转换为字节。

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
代码中用到PrintWriter 这个构造方法 PrintWriter(OutputStream out, boolean autoFlush) ,可以直接接受字节流(BufferedWriter只能接受字符流,需要OutputStreamWriter把s.getOutputStream()包成字符流),
第二参数true 让生成的PrintWriter可以自动刷新,就是不需要再调用flush()方法(BufferedWriter需要  bufw.flush();实现).

PrintWriter 用到的println(String x)方法  out.println(line);  ,
public void println(String x) 是打印 String,然后终止该行。此方法的行为就像先调用 print(String) 然后调用 println()  (这个是输出换行) 一样。  所以就不需要BufferedWriter中的换行bufw.newLine();

         

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
楼主你好,如果帖子没问题了,那么请把帖子的类型改为“已解决”。如果不会改,请看我的个性签名
回复 使用道具 举报
如果问题以解决,请修改分类。谢谢合作
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马