Java IO原理
-
I/O是Input/Output的缩写,I/O是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通信等。
-
Java程序中,对于数据的输入/输出操作以"流(stream)"的方式进行。
-
java.io包下提供了各种"流"类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。
-
输入(input):读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。
-
输出(output):将程序(内存)数据输出到磁盘、光盘等存储设备中。
注意:输入和输出都是站位在内存的角度。
流的分类
流的分类 | ||
---|---|---|
按数据单位 | 字节流(8bit) | 字符流(16bit) |
按流向 | 输入流 | 输出流 |
按角色 | 节点流 | 处理流(包裹在节点流上) |
Java的IO流一共涉及40多个类,他们都是从如下四个抽象基类派生的。由这四个类派生出来的子类名称都是以其父类名作为子类名后缀。
{抽象基类} | 字节流 | 字符流 |
---|---|---|
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
这四个父类都被抽象化,具体的实施在子类中实现。
IO流体系中访问文件的四个流可以直接操作一个File,属于节点流(文件流)。后面的所有流都是作用在已有的流基础之上的处理流。
如何判断一个流的类型?流的后缀一定带有四个抽象基类,该流的类型与其抽象基类相同。
常用的节点流与处理流:
抽象基类 | 节点流(文件流) | 缓冲流(处理流的一种) |
---|---|---|
InputStream | FileInputStream | BufferedInputStream |
OutputStream | FileOutputStream | BufferedOutputStream |
Reader | FileReader | BufferedReader |
Writer | FileWriter | BufferedWriter |