节点流和处理流
JAVA IO操作总结——节点流和处理流 按照流是否直接与特定的地方(如磁盘、内存、设备等)相连,分为节点流和处理流两类。
节点流:可以从或向一个特定的地方(节点)读写数据,如文件内存
处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
节点流(介质流)
类型 | 字符流 | 字节流 |
---|---|---|
File(文件) | FileReader FIlewriter | FileInputstream Fileoutputstream |
Memory Array | CharArrayReader CharArrayWriter | ByteArrayInputstream ByteArrayOutputStream |
Memory String | StringReader StringWriter | |
Pipe(管道) | PipedReader PipedWriter | PipedInputstream PipedOutputStream |
字符流(装饰流)
处理类型 | 字符流 | 字节流 |
---|---|---|
Buffering(缓冲流) | BufferedReader Bufferedwriter | BufferedInputstream BufferedOutputstream |
Filtering | FilterReader FilterWriter | FilterInputstream FilterOutputStream |
字符字节转换 | InputStreamReader:字节流转换为字符流 OutputStreamWriter:将字符流转换为字节流 | |
Object Serialization(对象流) | ObjectInputstream ObjectOutputStream | |
Data Conversion(数据流) | DataInputstream DataOutputStream | |
Counting | LineNumberReader LineNumberWriter | LineNumberInputstream LineNumberOutputStream |
Peaking ahead | PushbackReader | PushbackInputstream |
printing(打印流) | PrintWriter | PrintStream |
类关系
IO流主要分为字节流和字符流。InputStream与OutputStream是所有输入输出字节流的基类,Reader与Writer是所有输入输出字符流的基类。
八位一个字节,字节流按字节读取,不涉及编码问题。字符根据编码的不同占用的字节数与字符编码不同,字符流按字符读取,涉及编码问题。
InputStreamReader、OutputStreamWriter将字节流转成字符流,是字节流通向字符流的桥梁,使用指定的字符集读取字节并将其解码成字符。它们构造函数中通常需要指定字符集,否则为默认字符集。
RandomAccessFile不属于InputStream和OutputStream类系的。继承ataOutput, DataInput,是较节点流和处理流独立的类。结合DataInputStream和DataOutputStream功能并添加自己特有的功能如定位用的getFilePointer()
关系图及分类:
比较清晰的关系图
IO分类及关系的介绍,不同流的分类
其他
资料
gitbook
java io
api文档
jdk在线文档
examples
Java I/O Examples