流的分类
1.操作的数据单位:字节流(InputStream,OutputStream),字符流(Reader,Writer)
2.字符流的流向:输入流(Input,Reader),输出流(Output,Writer)
3.流的功能:字节流,处理流(缓冲流,该流应用的是设计模式中的装饰器模式)
常用流的继承关系
- 字节输入流
类 | 功能作用 |
Inpustream | 输入字节流,为抽象类,被其他输入字节流继承 |
FileInputStream | 文件输入字节流,用于文件的读出操作(按字节) |
BufferedInputStream | 字节缓冲流,对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。 |
ObjectInputStream | 对象字节输入流,可以从流中读取序列化的类对象 |
这里说明再说明下BufferedInputStream处理流。该类能够处理所有InputStream的子类,因为该类的构造方法允许传入一个InputStream类的参数,因此能够处理所有InputStream类的子类
源码:
简单来说就是:BufferedInputStream能够把所有的继承了InputStream的类对象包装起来进行传输,这样我们就不用去区分传输的类型是String,File等其他类型了.
- 字节输出流
该类的功能与InputStream基本相同,只不过该类是用于输出的。
- 字符输入流
该类的功能与InputStream基本相同,不同的是该类读取数据的方式是按字符读取的。
InputStreamReader:字节转换流,是字节输入流转换到字符输入流的桥梁.主要用于数据读取过程中解决乱码的问题
- 字符输出流
该类的功能与InputStream基本相同,不同的是该类读取数据的方式是按字符读取的,并且是输出流
OutputStreamWriter:转换流,是字节输入流转换到字符输入流的桥梁主要用于数据输出过程中解决乱码的问题
PrintWriter:打印字符输出流,用于把格式化的对象输出到字符流。主要用于控制台字符打印,也可以打印字符到文件中。
标准输入流和标准输出流:System.in 和 System,out(分别代表键盘输入和显示器输出)