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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张晨 黑马帝   /  2011-9-7 11:00  /  2114 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[code=java]      
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;  
public class BufferedKey {
        public void output()
        {
                BufferedReader bufr =
                                new BufferedReader (new InputStreamReader (System.in)        );  
                /**
                 * 输入顺序 键盘-->内存  键盘是字节流,如果要取得字符流就需要转换
                 */
                BufferedWriter bufw =
                                new BufferedWriter (new OutputStreamWriter (System.out));
                /**
                 * 输出顺序 内存-->屏幕  屏幕输出的是字节流,所以将内存中字符流转换成字节流,然后是不是默认编码表(GBK)在转化成字符输出?
                 */
               
                /**
                 * 上面两个转换是否重复了,我们输入直接读取字节流,然后让字节流直接放进OutputStreamWriter?
                 */
               
                String line;
               
                try
                {
                        while ( (line = bufr.readLine() ) != null )  
                        {
                                bufw.write(line);
                                bufw.newLine();  
                                bufw.flush();               
                        }
                }
                catch (IOException e) {
                        System.out.println("读写错误!");
                        e.printStackTrace();
                }
        }
        public static void main (String argc[])
        {
                BufferedKey bk = new BufferedKey();
                bk.output();
        }
}[/code]
[ 本帖最后由 张晨 于 2011-09-07  11:03 编辑 ]

评分

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

查看全部评分

2 个回复

倒序浏览
是默认编码表转化成字符输出
Java JDK API上定义的public class BufferedReader extends Reader,如果你不使用BufferedReader,也可以不转换。

BufferedReader读取的是字符流,System.in表示的是字节流(InputStream),现在接收的是字符流,需要将字节流转换成字符流(InputStreamReader)。
System.out表示的对应系统的标准输出,一般是显示器。现在要从内存中现在要输出的是字节流,但内存中存在的是字符流,需要将字符流转换成字节流(OutputStreamReader)。
[ 本帖最后由 单兴恒 于 2011-09-07  14:20 编辑 ]

评分

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

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-7 12:53:23
藤椅
我想你是觉得在这个程序中首先将输入字节流转换为字符流,然后又将字符流转换字节流输出有点重复,因为输入是字节流,输出也是字节流,可不可以不要转换?可以很肯定的回答是可以的,但是因为转换成字符流可以更方便我们对字符进行操作,试想一下,如果你不用bufferedReader,readLine()这个方法你还能用吗,那必须不能,那样在处理读取数据方面就变得复杂了,首先while语句执行的次数可不止翻倍那么简单了,所有说,将字节流转换成字符流不是必须,但是却可以简化程序,提供方便。

评分

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

查看全部评分

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