黑马程序员技术交流社区

标题: 字符转换流和字节转换流怎么用? [打印本页]

作者: tf996268809    时间: 2014-2-21 23:26
标题: 字符转换流和字节转换流怎么用?
这两个总是分析有误,在具体使用什么时候才需要转换呢
作者: flying    时间: 2014-2-22 02:29
读入的时候用字节转换流
写入的时候用字符转换流
转换流主要是针对编码的不同出现的
读入的时候可以根据指定的编码表将字节转换成相应的字符  
写入的时候也可以根据指定的编码表将字符转换成相应的字节
我是这样理解的 也可能不对


作者: .......    时间: 2014-2-22 08:58
就是在复制文件的时候把字符流变成字节流传送到目的地。到目的地后字节流在变成字符流存储起来。 前提这个文件不是文本文件。  是文本文件直接用字符流存储
作者: 徐芾清    时间: 2014-2-22 10:06
字符流=字节流+编码过程
数据是以字符的形式存储的
不处理字符串的时候用字节流,如:复制图片,声音,视频资料等
处理字符串的时候用字节流更方便,因为已经帮你封装好了编码过程
如向txt里写数据的过程是:先读取字符串,通过编码转换为字节存储;
读取的时候也是先读取到字节流再利用编码表编码为字符流
但也可以使用字节流完成这一读写过程,这时候就需要利用InputStreamReader,OutputStreamWtrier进行转换了
作者: 心是你仰望的城    时间: 2014-2-22 10:28
两者的关联可以做如下理解:
这两个之间通过 InputStreamReader,OutputStreamWriter来关联,实际上是通过byte[]和String来关联
字节流----->字符流,实际上就是byte[]转化为String时
字符流----->字节流,实际上是String转化为byte[]时
最常使用的情景如下:
有一些时候系统给你提供的只有字节流,比如说System.in标准输入流。就是字节流。你想从他那里得到用户在键盘上的输入,只能是以转换流将它转换为Reader以方便自己的程序读取输入。
还有比如说Socket里的getInputStream()很明显只给你提供字节流,你要不救就直接用,要不就得给他套个InputStreamReader()用来读取。以达到需求。

希望可以帮到你





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