Java IO 是 Java API 的重要内容,因为体系比较庞大,初看去,比较麻烦,这里整理一下。
Java IO 流包含多种数据类型,可以字节,元数据类型,本地字符,Java 对象等。流可以只是传递数据,也可以对数据进行操作,对流进行转化。前者有时也称为「节点流」,后者有时也称为「处理流」。
1. 流的种类
Java IO 流有两种:面向字节的字节流(byte stream)和面向字符的字符流(character stream)。在这两种分类之下,还有若干子类。可以认为所有的流类型,最终都是基于字节流的。
2. 流的方向
「大江东去……」,水流是有方向的。Java IO 流也是有方向的,分为:写入和读取。
3. 流的实现
Java 中依据流的种类和方向,已有很多实现。
对字节流而言,两个顶级接口是:InputStream, OutputStream
input stream: InputStream (abstract)
an object from which we can read a sequence of bytes
output stream: OutputStream
an object from which we can write a sequence of bytes
对字符流而言,两个顶级接口是:Reader, Writer
以上顶级接口,都是 abstract class
InputStream 和 OutputStream 继承树:
Reader 和 Writer 继承树:
4. 缓冲流(Buffer)
缓冲流是操作流,套在节点流之上。
在 nio 中,对应各原数据类型,有如下一些 Buffer 类:
ByteBuffer
CharBuffer
ShortBuffer
IntBuffer
LongBuffer
FloatBuffer
DoubleBuffer
(TODO)
5. 流的转化
byte -> char
没有 char -> byte
6. NIO
此处简要记录,需要专门开启一个页面描述。TODO
7. 几个实例
TODO