一、IO的定义
1.什么是IO?
IO指使用Java进行输入(Input),输出(Output)操作。Java中的IO机制基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。
2.Java.io包
这是一个基本上包含所有Java中需要用来输入输出的类的包。
二、IO的分类
1.据流向分类:可分为输入流和输出流
输出:把程序(内存)中的内容输出到磁盘、光盘等存储设备中
输入:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中
2.根据传输数据单位:字节流和字符流
字节流:数据流中最小的数据单元是字节
字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节(无论中文还是英文都是两个字节)。
io流继承关系图
3.据功能:节点流和包装流
节点流:可以从或向一个特定的地方(节点)读写数据,直接连接数据源。如最常见的是文件的FileReader,还可以是数组、管道、字符串,关键字分别为ByteArray/CharArray,Piped,String。
包装流:并不直接连接数据源,是对一个已存在的流的连接和封装,是一种典型的装饰器设计模式,使用处理流主要是为了更方便的执行输入输出工作,如PrintStream,输出功能很强大,又如BufferedReader提供缓存机制,推荐输出时都使用处理流包装。