黑马程序员技术交流社区

标题: 一个关于写入转换流的问题??? [打印本页]

作者: jingzhouheima    时间: 2013-8-1 14:50
标题: 一个关于写入转换流的问题???
本帖最后由 杨兴庭 于 2013-8-2 19:03 编辑

public static void main(String[] args) throws IOException
{
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));//----------------------------------问题是OutputStreamWriter是字符流转向字节流的桥梁,那么这里在
                                                                                     //----------------------------------存入的时候不就已经是字节了吗。但怎么就是字符流了呢?
String line = null;
while((line=bufr.readLine())!=null)
{
  if("over".equals(line))
   break;
  bufw.write(line.toUpperCase());
  bufw.newLine();
  bufw.flush();
}
bufr.close();
}

作者: 下雨天    时间: 2013-8-1 15:34
转换流的特点就是用字符流的方法来操作字节流,无论是读取还是写入,都是用字符流的方法来操作的
很多人都说转换流的读取是字节转字符,写入是字符转字节,这个要看你怎么理解,转换是由转换流来完成的,而不是你来完成的
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
这句话的意思:我用字符流 来读取你的字节数据
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));//
这句话的意思:我给你字符数据 你给我用字节流写

换个角度想,BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));这句话读取的结果是什么? 是一堆字符数据
在while循环中 数据一边读 一边写
本来读出来的数据就是字符数据
那么在把这些数据交给BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
这时候的数据还是字符数据,等写完的结果才是字节呢

作者: 王峰230321    时间: 2013-8-1 16:37
你能在控制台输出字节吗. ?   比如说图片MP3.  等媒体文件. 全是用字节编的.     字节流代表权威.  以为他什么都能干. .  
但是控制台无论是输入还是输出. 全部都是字符形式的. .  而且字符流的专门处理字符的能力上比字节流强太多.
所以.  就是这么回事.




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