----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
Java中的流,可以从不同的角度进行分类。
按照数据流的方向不同可以分为:输入流和输出流。
按照处理数据单位不同可以分为:字节流和字符流。
按照实现功能不同可以分为:节点流和装饰流。
节点流:
| 字节输入流 | 字节输出流 | 字符输入流 | 字符输出流 |
抽象基类 | InputStream | OutputStream | Reader | Writer |
访问文件 | FileInputStream | FileOutputStream | FileReader | FileWriter |
访问对象 | ObjectInputStream | ObjectOutputStream |
|
|
访问字符串 |
|
| StringReader | StringWriter |
访问数组 | ByteArrayInputStream | ByteArrayOutputStream | CharArrayReader | CharArrayWriter |
访问基本数据 | DataInputStream | DataOutputStream |
|
|
访问管道 | PipedInputStream | PipedOutputStream | PipedReader | PipedWriter |
装饰流:
| 字节输入流 | 字节输出流 | 字符输入流 | 字符输出流 |
抽象基类 | FilterInputStream | FilterOutputStream | Reader | Writer |
缓冲流 | BufferedInputStream | BufferedOutputStream | BufferedReader | BufferedWriter |
打印流 |
| PrintStream |
| PrintWriter |
字符装饰流 |
|
| FilterReader | FilterWriter |
特殊流:
| 字节输入流 | 字节输出流 | 字符输入流 | 字符输出流 |
抽象基类 | InputStream | OutputStream | Reader | Writer |
转换流 |
|
| InputStreamReader | OutputStreamWriter |
特殊流 | SequenceInputStream |
|
|
|
表格说明:
1、FilterInputStream、FilterOutPutStream分别是InputStream、OutPutStream的子类,并不是抽象的;
2、DataInputStream、DataOutputStream分别继承自FilterInputStream、FilterOutputStream,,为了方便记忆放入了节点流的表中;
一、InputStream体系:
从不同数据源产生输入的类,这些数据源包括:
1、 文件(硬盘)
2、 字节数组(内存)
3、 管道(PipedInputStream)
4、 其他流组成的序列(SequenceInputStream)
5、 其他数据源,如键盘、Internet
每种数据源都对应一个InputStream的子类。
InputStream的FilterInputStream为装饰类提供了一个基类。
二、OutputStream体系
该体系的类决定了输出去往的目的地,如文件、字节数组、管道、控制台等。
OutputStream的FilterOutputStream为装饰类提供了一个基类。
三、Reader、Writer体系与InputStream、OutputStream体系大致相同,只是其中的FilterReader、FilterWriter好像没多大用处。