Java I/O流详解

Java中把不同的数据源与程序间的数据传输都抽象表述为"流"(Stream),java.io包中定义了多种I/O流类型实现数据I/O功能。

I/O流分类:

输入流(Input Stream)和输出流(Output Stream)

节点流(Node Stream)和处理流(Processing Stream)

字符流(Character Stream)和字节流(Byte Stream)


输入流和输出流

按照数据流动的方向,java流可分为输入流(Input Stream)和输出流(Output Stream)

输入流只能从中读取数据,而不能向其写出数据;

输出流则只能向其写出数据,而不能从中读取数据

特例:java.io.RandomAccessFile类


节点流和处理流

根据数据流所关联的是数据源还是其他数据流,可分为节点流(Node Stream)和处理流(Processing Stream)

节点流直接连接到数据源

处理流是对一个已存在的流的连接和封装,通过封装的流的功能调用实现增强的数据读/写功能,处理流并不直接连接到数据源.


字符流和字节流

按传输数据的"颗粒大小"划分,可分为字符流(Character Stream)和字节流(Byte Stream)

字节流以字节为单位进行数据传输,每次传送一个或多个字节;

字符流以字符为单位进行数据传输,每次传送一个或多个字符.


Java I/O主要包括如下几个层次:

1. File(文件特征与管理):用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等。

2. InputStream(二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征。

3. OutputStream(二进制格式操作):抽象类。基于字节的输出操作。是所有输出流的父类。定义了所有输出流都具有的共同特征。

Java中字符是采用Unicode标准,一个字符是16位,即一个字符使用两个字节来表示。为此,JAVA中引入了处理字符的流。

4. Reader(文件格式操作):抽象类,基于字符的输入操作。

5. Writer(文件格式操作):抽象类,基于字符的输出操作。

6. RandomAccessFile(随机文件操作):它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作



Java命名惯例:

凡是以InputStream或OutputStream结尾的类型均为字节流,凡是以Reader或Writer结尾的均为字符流。


InputStream类层次

Java I/O流详解

OutputStream类层次

Java I/O流详解

Reader类层次

Java I/O流详解

Writer类层次

Java I/O流详解

InputStream ,OutputStream ,Reader,Writer都是抽象类。


更多详细内容和实例代码见:http://fehly.iteye.com/blog/658998

转载于:https://my.oschina.net/mzzyk/blog/401528