IO流是什么
- Java的IO是实现输入和输出的基础,可以方便的实现数据的输入和输出操作。
- 在Java中把不同的
输入/输出源
(键盘,文件,网络连接等)抽象表述为“流”(stream)
。 - 通过流的形式允许Java程序使用相同的方式来访问不同的输入/输出源。stram是从
起源(source)
到接收的(sink)
的有序数据。
IO流的分类
按照流的流向划分
输入流(InputStream)
: 只能从中读取数据,而不能向其写入数据。输出流(OutputStream)
:只能向其写入数据,而不能向其读取数据。 注意:输入流和输出流是相对于程序而言的。
按照处理数据单位划分
字节流(InputStream、OutputStream)
:数据流中最小的数据单元是字节。字符流(Reader、Writer)
:数据流中最小的数据单元是字符。
按照流的角色划分
节点流
:可以从或向一个特定的地方(节点)读写数据,直接连接数据源。处理流
:不直接连接数据源,是对一个已存在的流的连接和封装,是一种典型的装饰器设计模式,使用处理流
主要是为了更方便的执行输入输出工作。
IO流的体系分类
按操作对象划分
-
文件操作:
FileInputStream、FileOutputStream、FileReader、FileWriter
等 -
管道操作:
PipedInputStream
等 -
数组操作:
- 字符数组:
CharArrayReader、CharArrayWriter
- 字节数组:
ByteArrayInputStream、ByteArrayOutputStream
- 字符数组:
-
缓冲操作:
BufferedWriter、BufferedInputStream
等 -
基本数据类型操作:
DataOutputStream、DataInputStream
-
对象序列化操作:
ObjectOutputStream、ObjectInputStream
-
转化操作:
InputStreamReader、OutputStreamWriter
-
打印控制:
PrintStream、PrintWriter