黑马程序员技术交流社区

标题: 为什么不直接使用字符流 [打印本页]

作者: 高光天    时间: 2015-3-20 08:04
标题: 为什么不直接使用字符流
字符流操作起来多方便

作者: Mr.南郭    时间: 2015-3-20 09:06
字符流、字节流答题
-----------------------
操作方便不方便要看操作对象啊。字符流处理文本文件那是爽爽的,可是你让它处理图片文件或着视频音频文件试试,直接完蛋。下面一起来理清下字符流和字节流几个小概念。

背景知识:
        所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符,而是先把字符编码成字节,再储存这些字节到磁盘(木办法啊,谁让存储器只能识别0和1啊)。在读取文件时,也是一个字节一个字节地读取以形成字节序列。

字符流和字节流是io流按其操作特点的不同分的两大类,两者都有自己的输入、输出流。
字节流:InputStream、OutputStream;
字符流:Reader、Writer。

字符流和字节流的操作原理区别:
        字符流处理的单元为2个字节的Unicode字符,其底层仍然是字节流。
        字节流处理单元为1个字节。字节流是最基本的,可以转换为字符流。

操作对象不同:
        字符流:字符、字符数组或字符串。实际应用中用来操作纯文本文件,读取速度快。
        字节流:可用处理于任何类型的对象,如音频、视频、图片等。速度慢。

作者: 高光天    时间: 2015-3-20 09:48
Mr.南郭 发表于 2015-3-20 09:06
字符流、字节流答题
-----------------------
操作方便不方便要看操作对象啊。字符流处理文本文件那是爽爽 ...

懂了,谢谢
作者: kapp_tolo    时间: 2015-3-20 11:15
我好想还是怎么不明白的样子。。
作者: 吐槽ing    时间: 2015-3-20 11:25
   字符流
在程序中一个字符等于两个字节,Java为我们提供了Reader和Writer两个专门操作字符流的类

  
  
  
1)        字符输出流:Writer
Writer是一个字符流,它是一个抽象类,所以要使用它,也必须通过其子类来实例化它后才能使用它。
Writer类的常用方法
方法名称
描述
public abstract void close() throws IOException
关闭输出流
public void write(String str) throws IOException
将字符串输出
public void write(char cbuf) throws IOException
将字符数组输出
public abstract void flush() throws IOException
强制性清空缓存
   字符输入流:Reader
Reader本身也是一个抽象类,同样,如果使用它,我们需要通过其子类来实例化它才可以使用它。
作者: 吐槽ing    时间: 2015-3-20 11:28
  我也不太懂
作者: 夜班心桥    时间: 2015-3-20 23:41
Mr.南郭 发表于 2015-3-20 09:06
字符流、字节流答题
-----------------------
操作方便不方便要看操作对象啊。字符流处理文本文件那是爽爽 ...

补充:字符流也可以转化为字节流
作者: Mr.南郭    时间: 2015-3-21 00:03
夜班心桥 发表于 2015-3-20 23:41
补充:字符流也可以转化为字节流

可以是可以,但一般没这么用的,字符流比字节流高效,能用字符流操作的不会再转成字节流来处理的




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