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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵洋洋 中级黑马   /  2014-5-15 15:09  /  4232 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

serversocket ss=new serversocket(45532);
socket s=ss.socket();
s.getInputStream()他读取的是字节流
而以下语句:
BufferedReader bufIn=new  BufferedReader(new InputStreamReader(s.getInputStream()));
查API知道 InputStreamReader读入的是字符流,为什么不能直接用字节流?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

11 个回复

倒序浏览
可以用字节流但是如果你要处理文字的话用字符流会好点
serversocket ss=new serversocket(45532);
socket s=ss.socket();
InputStream  in = s.getInputStream()
in.read(..)
.
.
.
.
这样就是字节流读取了,身边没有编码的东西只能给你说下思路了

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
1.InputStreamReader 继承了Reader类 所以它肯定是字符流读取类
2.InputStreamReader的功能是将字节流转换为字符流 ,这是他的构造方法InputStreamReader(InputStream in)

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报 1 0
BufferedReader bufIn=new  BufferedReader(new InputStreamReader(s.getInputStream()));

其实你也可以使用字节流,这里使用这条语句只是为提高写入的效率而已,BufferedReader读取的源是字符流,然而s.getInputStream()读取的是字节流,就要用到一个字节转换流,InputStreamReader(将字节流装换为字符流),你可以指定使用的编码,当然也可以使用默认的编码“gbk”, 用到缓冲区,提高读取效率。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
龙健 发表于 2014-5-16 01:10
BufferedReader bufIn=new  BufferedReader(new InputStreamReader(s.getInputStream()));

其实你也可以使 ...

谢谢,,也就是说可以不用转换
回复 使用道具 举报
赵洋洋 发表于 2014-5-18 09:15
谢谢,,也就是说可以不用转换

字节流不会放进缓冲区吗?
回复 使用道具 举报
龙健 中级黑马 2014-5-18 09:59:55
7#
赵洋洋 发表于 2014-5-18 09:16
字节流不会放进缓冲区吗?

可以啊,字节流也可以缓冲啊,BuffereInputStream  BuffereWriterOutputstream   都是缓冲流,只是他们介绍的缓冲对象不一样而已
回复 使用道具 举报
嗯,,,,,明白了字节流跟字符流的具体区别,,3Q
回复 使用道具 举报
原来是这样   学习了
回复 使用道具 举报
今天刚学了了。
回复 使用道具 举报
weimoliang 发表于 2014-5-15 16:02
1.InputStreamReader 继承了Reader类 所以它肯定是字符流读取类
2.InputStreamReader的功能是将字节流转换 ...

一般都用BufferedReader的吧?
回复 使用道具 举报
atyzy 初级黑马 2016-12-22 17:25:57
12#
好东西,值得学习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马