一、IO流
什么是IO流
流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出,IO流是用来处理设备上的数据,包括文件,磁盘,网络等。
程序需要数据:把数据流入到程序中—>输入.
程序需要保存数据,把数据传递给别人—>输出.
关于流的特性:
1.先进先出:最先写入输出流的数据最先被输入流读取到。
2.顺序存取:可以一个接一个地往流中写入一串字节,读出时也将按写入顺序读取一串字节,不能随机访问中间的数据。(RandomAccessFile除外)
3.只读或只写:每个流只能是输入流或输出流的一种,不能同时具备两个功能,输入流只能进行读操作,对输出流只能进行写操作。在一个数据传输通道中,如果既要写入数据,又要读取数据,则要分别提供两个流。
IO流体系
IO流的分类
站在不同的角度,IO的分类方式是不一样的:
- 按数据流的方向:输入流、输出流
- 按处理数据单位:字节流、字符流
- 按功能:节点流、处理流
四大基流:
- 字节输出流OutPutStream
- 字节输入流InPutStream
- 字符输出流Writer
- 字符输入流Reader
四大基流都是抽象类: 其他流都是继承于这四大基流的
我们不能创建四大基流的对象,只能创建其子类对象
由这四个类派生出来的子类名称都是以其父类名作为子类名后缀。
二、字节流
字节
一切文件数据(文本、图片、视频等)在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时一样如此。所以,字节流可以传输任意文件数据。在操作流的时候,我们要时刻明确,无论使用什么样的流对象,底层传输的始终为二进制数据。
字节输入流【InputStream】
定义:
使用输入流InputStream读取字节,文件输入流即FileInputStream
构建输入流,例如FileInputStream:
ins