黑马程序员--IO流总述

 ——- 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值