黑马程序员--IO流总述

来源:互联网 发布:string数组 添加 编辑:程序博客网 时间:2024/06/16 18:26

 ——- android培训、java培训、期待与您交流! ———-
 

1.1 什么是IO流

IO流用来处理设备之间的数据传输。Java对数据的操作是通过流的方式。输入流和输出流相对于内存设备(也可以理解为我们的程序)而言。

1.2 IO流的定义分类

a)按照操作类型分类:

  • 字节流 (一次读入或读出是8位二进制)
  • 字符流 (一次读入或读出是16位二进制)

b)按照数据流向分类:

  • 输入流
  • 输出流

这里写图片描述

c)按照实现功能分类:

  • 节点流 (直接与数据源相连,读入或读出)
  • 处理流 (在节点流的基础上,再套接一层,套接在节点流上的就是处理流)

1.2 IO流的体系

这里写图片描述

注:上图按照操作类型分类

 Jdk提供的流继承了四大类:InputStream(字节输入流),OutputStream(字节输出流),Reader(字符输入流),Writer(字符输出流)。 tip:名字中包含Reader和Writer的都是字符流;名字中包含InputStream和OutputStream的都是字节流

1.2.1 字符流和字节流的区别

  • 字节流读取的时候,读到一个字节就返回一个字节。字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在 UTF-8码表中是 3 个字节)时。先去查指定的编码表,将查到的字符返回。

  • 字节流可以处理所有类型数据,除文本数据外如图片,mp3,avi 。而字符流只能处理文本数据

1.2.2 流的扩展分类

名称 对象 打印流 PrintStream、PrintWriter 管道流 PipedInputStream、PipedOutputStream 序列流 SequenceInputStream 对象序列化流 ObjectInputStream、ObjectOutputStream

说明:

  • 打印流 :一般是打印到控制台,可以进行控制打印的地方。

  • 管道流 :PipedInputStream的一个实例要和PipedOutputStream的一个实例共同使用,共同完成管道的读取写入操作。主要用于线程操作。

  • 序列流 :可以将流合并,可以用于数据的切割和合并。

  • 对象序列化流:对象序列化,把对象直接转换成二进制,写入介质中。使用对象流需要实现Serializable接口,否则会报错。

1.3 总结

  • 只要是处理纯文本数据,就要优先考虑使用字符流。除此之外都用字节流

  • 流对象基本上都是成对出现的,有特定的输出流就有对应该流行的出入流,根据这个规律可以方便记忆

  • 处理流是在字节流的基础上实现的,所以使用处理流的时候在最里层需要传入字节流的对象

  • -
0 0
原创粉丝点击