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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fatesabering 中级黑马   /  2014-12-12 11:53  /  2524 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

好像是面试问过的问题,答案是不是字符流一次读一个字符,字节流一次读一个字节

评分

参与人数 1黑马币 +3 收起 理由
杨佳名 + 3

查看全部评分

10 个回复

倒序浏览
字节流是由字节组成的,字符流是由字符组成的.Java里汉字字符由两个字节组成.默认编码格式GBK。
不是,字符流用于纯文本文件的读写,字节流可以用于所有文件的读写。
字符流读取的是常用的文字数据,字节流读取的是二进制数据。

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 奋斗的蜗牛ksd 于 2014-12-12 22:15 编辑

楼上说的不太严谨,不过大概意思很清楚了。

楼主额问题也很明显:字符流和字节流的区别在哪儿,你自己猜测答案为答案是不是字符流一次读一个字符,字节流一次读一个字节

很明显 ,是错误的。
楼主的答案可以改为: 字符流一次操作 两个字节的  unicode字符,字节流一次只能操作一个字节。【注意是操作,或者读写,   不能仅仅是 读  或者写】

首先明白:
字符流  字节流 是一个统称
流的共性操作 是  读  和  写

字符流 分为  Reader   Writer 两个类,【这两个大类下面还有很多类,不过都是具有读写操作文本数据的共性】这两个类 分别对应 read()  和write方法,  字符流 的读写 操作的是文本数据,即 字符 ,字符串,或者字符数组,

所以你如果面试时 回答 字符流一次读一个字符,很明显 你连字符流包括什么 都不知道,面试官肯定会直接挂了你。

字节流  ,具体有什么类,对应有什么方法,请楼主 自己查阅视频 或者API 去学习

再补充下二楼 说的错误:【也不能算错误,不严谨把】

字符流也是操作的字节数据,只不过 在读取 和写入的时候 增加了 解码  编码的操作,
编码操作:把 字符数据 编码 成 字节数据保存在硬盘上
解码 反之,不过 都是按照默认的 unicode 国际标准交换码 表来的,

而字节流 直接操作的是字节数据,面试的时候,我认为 在说明字节流的时候应该注重强调 字节流 的其他子类对象,强调 字节流 的 功能强大性,【具体子类对象 以及特点,适用范围 请自寻查阅API 或者 老毕视频】


哦,为了回答你的问题,今天我又翻阅了老毕视频,总结了一小点可能加分的地方:

Reader类的read()方法返回类型为int :作为整数读取的字符(占两个字节共16位),范围在 0 到 65535 之间 如果已到达流的末尾,则返回 -1

inputStream的read()虽然也返回int,但由于此类是面向字节流的,一个字节占8个位,所以返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。因此对于不能用0-255来表示的值就得用字符流来读取!比如说汉字.

也就是说:面试时 这么回答可能会加分:  读取汉字的时候,只能使用字符流的read方法,原因就是 字符流操作单元是两个字节,字节流操作单元是一个字节

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
额。又发现字符流和字节流一个巨大的区别,  可能是面试官先更要的最直接 的答案,

看看有人想知道么。没人算了。
我留着   混点黑币
回复 使用道具 举报
奋斗的蜗牛ksd 发表于 2014-12-12 22:09
楼上说的不太严谨,不过大概意思很清楚了。

楼主额问题也很明显:字符流和字节流的区别在哪儿,你自己猜测 ...

- -那为什么用FileInputStream可以读到txt文本的中文呢?好像字节和字符都能读中文,只要编码和默认编码一致就算是一个字节一个字节读也能读出中文吧?编码不一致用转换流就行了。
回复 使用道具 举报
这个毕老师的视频里面有讲的哦
回复 使用道具 举报
冥夜 发表于 2014-12-13 15:03
- -那为什么用FileInputStream可以读到txt文本的中文呢?好像字节和字符都能读中文,只要编码和默认编码 ...

你的答案涉及了字符集的概念,老实说 我没学会。
我没有否认字节流不可以读取 中文,只是  字节流 读取中文 会出现乱码,解决乱码问题 需要 用你说的   
FileInputStream 读取得到的字节序列使用InputStreamReader 转化为字符序列,并且可以指定相应的字符集


不过看网上资料,大家还都是提倡使用字符流读取中文的,建议罢了,看老毕视频也这么说的,
回复 使用道具 举报
讨论的不错,学习了!:lol
回复 使用道具 举报
huoxy 中级黑马 2014-12-14 10:24:18
9#
字符流就是在字节流的基础上加了编码表操作,多了一个转换。细节毕老师视频讲得挺清楚的。
回复 使用道具 举报
学习了,混点经验
回复 使用道具 举报
奋斗的蜗牛ksd 发表于 2014-12-12 22:09
楼上说的不太严谨,不过大概意思很清楚了。

楼主额问题也很明显:字符流和字节流的区别在哪儿,你自己猜测 ...

明白了 写的很详细 谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马