Java IO即Java 输入输出系统。不管我们编写何种应用,都难免和各种输入输出相关的媒介打交道,其实和媒介进行IO的过程是十分复杂的,这要考虑的因素特别多,比如我们要考虑和哪种媒介进行IO(文件、控制台、网络),我们还要考虑具体和它们的通信方式(顺序、随机、二进制、按字符、按字、按行等等)。Java类库的设计者通过设计大量的类来攻克这些难题,这些类就位于java.io包中。
在JDK1.4之后,为了提高Java IO的效率,Java又提供了一套新的IO,Java New IO简称Java NIO。它在标准java代码中提供了高速的面向块的IO操作。本篇文章重点介绍Java IO,关于Java NIO请参考我的另两篇文章:
高级Java工程师必备 ----- 深入分析 Java IO (一)BIO
高级Java工程师必备 ----- 深入分析 Java IO (二)NIO
Java IO类库的框架首先看个图:
Java IO的类型虽然java IO类库庞大,但总体来说其框架还是很清楚的。从是读媒介还是写媒介的维度看,Java IO可以分为:
输入流:InputStream和Reader
输出流:OutputStream和Writer
而从其处理流的类型的维度上看,Java IO又可以分为:
字节流:InputStream和OutputStream
字符流:Reader和Writer
下面这幅图就清晰的描述了JavaIO的分类:
-
字节流
字符流
输入流
InputStream
Reader
输出流
OutputStream
Writer