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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾辉 黑马帝   /  2012-2-19 00:53  /  1558 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

字节流与字符流,为什么要用转换流,把字节转换成字符流,为什么不直接用字符流?

4 个回复

倒序浏览
看是操作什么文件吧.
文本文件用字符流,其他的用字节流
回复 使用道具 举报
这是因为有一些时候系统给你提供的只有字节流,比如说System.in标准输入流。就是字节流。你想从他那里得到用户在键盘上的输入,只能是以转换流将它转换为Reader以方便自己的程序读取输入。再比如说Socket里的getInputStream()很明显只给你提供字节流,你要不行直接用,就得给他套个InputStreamReader()用来读取。网络传输来的字符。
回复 使用道具 举报
1)字节流和字符流还是有区别的:字节主要是读一些如音乐文件、视频文件(可以理解那些比较细腻精度要求高的文件),而字符流就相对宽松一些了:如文本文件…… 
2)flush() 是刷新的意思,就是把缓冲区里的数据给提交输出流里然后输出; close()是关闭输出流,在关闭之前会做一次刷新!所以你只要有close()也相当于刷新后提交数据了!
回复 使用道具 举报
字节流与字符流主要的区别是他们的的处理方式
字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的
例如:图片、mp3,电影,视频等等,它们都是二进制数据。
但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化
这两个之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联
在从字节流转化为字符流时,实际上就是byte[]转化为String时,
public String(byte bytes[], String charsetName)
有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统的lang
而在字符流转化为字节流时,实际上是String转化为byte[]时,
byte[]    String.getBytes(String charsetName)
也是一样的道理
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马