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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 靖美专 黑马帝   /  2012-2-14 18:57  /  3067 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Writer out
   = new BufferedWriter(new OutputStreamWriter(System.out));
OutputStreamWriter 是字符流通向字节流的桥梁...
控制台输出的不是字符吗????   OutputStreamWriter 怎么是字符转为字节???
   InputStream in =System.in;
         //将字节流对象转换为字符流对象,使用转换流InputStreamReader
        InputStreamReader  isr =new InputStreamReader (in);
键盘输入的是字符啊,,,怎么将字节流对象转换为字符流对象,使用转换流InputStreamReader????
求解啊

评分

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

查看全部评分

7 个回复

正序浏览
带Reader和Input的,都是输入流
带Writer和Output的,都是输出流
Reader与Writer都是字符型
Stream是字节型

同事有Stream和Reader或Writer的,是字符与字节的转换流。
自己写程序时候用的不多,但还是能用上。我觉得这个东西你在API里能得到很好的解释
带缓存的类前面都有Buffered这个单词。
回复 使用道具 举报
靖美专 黑马帝 2012-2-20 17:06:38
7#
寻找幸福的13狼 发表于 2012-2-14 20:31
•OutputStreamWriter:是Writer的子类,将输出的字符流转换为字节流。即:将一个字节流的输出对象变为字节 ...

OutputStreamWriter:将一个字节流的输出对象变为字节流的输出对象怎么理解  
回复 使用道具 举报
字节流与字符流主要的区别是他们的的处理方式
字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的 ,但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化 这两个之间通过 InputStreamReader,OutputStreamWriter来转换,实际上是通过byte[]和String来转换的。在实际开发中出现的中文的乱码问题其都是在字符流和字节流之间转化不统一而造成的。

评分

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

查看全部评分

回复 使用道具 举报
其实OutputStreamWriter和InputStreamReader主要为了字节流到字符流的相互转换,同时也可以按照指定的编码写出。

需要注意的是转换流你只能处理文字,字符流数据。要是图片数据或者影音数据就只是使用字节流。希望能对你有帮助。

加油!

评分

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

查看全部评分

回复 使用道具 举报
•OutputStreamWriter:是Writer的子类,将输出的字符流转换为字节流。即:将一个字节流的输出对象变为字节流的输出对象  
•InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即:将一个字节流的输入对象变为字符流的输入对象。  

评分

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

查看全部评分

回复 使用道具 举报
查JAVA的API,System:
static InputStream in
          “标准”输入流。
static PrintStream out
          “标准”输出流。

System.out,System.in都是 Stream,字节流。屏幕输出、键盘输入时,涉及到系统、系统编码,就是说没这么简单,找资料看看吧。

评分

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

查看全部评分

回复 使用道具 举报
你如果输出abaef 这些确实是字符
可如果你输出3.15134 这按照字符处理就会比较麻烦吧
所以控制台输出的是字节流 个人理解。
输入也同理

评分

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

查看全部评分

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