IO流的分类
IO
IO,即IO流(输入输出流),浅显讲就是实现磁盘上的读取和写入,实际中除了磁盘,内存、网络都可以作为IO流的数据来源和目的地。
IO的分类
- 按照流的流向分,可以分为输入流和输出流
- 按照操作单元划分,可以分为字节流和字符流
- 按照流的角色可以分为节点流和处理流
Java IO流共涉及到40多个类,但都是从以下4个抽象类基类中派生出来的:
InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流OutputStream/Writer:所有输出流的基类,前者是字节输出流,后者是字符输出流
字节流和字符流的区别
区别
- 字节流以字节为单位输入输出数据,即
8bit传输- 字符流以字符为单位输入输出数据,即
16bit传输
有字节流为什么还需要字符流
字符流是由JVM讲字节转换得到的,这个过程比较耗时,并且如果不知道编码类型容易出现乱码问题。所以IO直接提供了一个直接操作字符的接口方便对字符就行流操作。
常用的IO类
File、FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream、PrintWriter、FileReader、FileWriter、BufferedReader、BufferedWriter、ObjectInputStream、ObjectOutputStream等。