[toc]
介绍
java的io是一个比较复杂的内容,其中的各种各样的类也是错中复杂,但是最主要的类还是可以分为4个类别:Inputstream、Outstream、Reader、Writer,其中Inputstream、Outstream属于字节流,Reader、Writer属于字符流。
讲解
一、Inputstream
从java文档当中找到java.io.InputStream,可以发现InputStream相关的定义:
1 | public abstract class InputStream |
相关函数:
1 | abstract int read() |
可以发现该类是一个抽象类,并且实现了接口Closeable。进而结合文档描述可以明白此抽象类是表示字节输入流的所有类的超类(父类),想要在程序中使用该类,就需要定义InputStream的子类,并且子类需要实现抽象函数int read()。
二、OutputStream
从java文档当中找到java.io.OutputStream 可以发现OutputStream相关的定义:
1 | public abstract class OutputStream |
相关函数:
1 | void close() |
跟Inputstream一样,该类也是一个抽象类,实现了接口Closeable和Flushable。进而结合文档描述可以知道该抽象类是表示字节输出流的所有类的超类(父类)。输出流接受输出字节并将其发送到某个接收器。在程序中使用该类 需要定义OutputStream子类,并且该类需要实现抽象方法void write(int b)。
三、Reader
从java文档当中找到java.io.Reader,可以发现Reader相关的定义:
1 | public abstract class Reader |
相关函数:
1 | int read() |
和上面两个类一比发现其实差不太多,也是一个抽象类,实现了接口Readable和Closeable。进而结合文档描述可以知道该类是读取字符流的抽象类。子类必须实现的抽象方法是read(char [],int,int)和close()。但是,大多数子类将覆盖此处定义的某些方法,以提供更高的效率和/或附加功能。
四、Writer
从java文档当中找到java.io.Writer,可以发现Writer相关的定义:
1 | public abstract class Writer |
相关函数:
1 | abstract void close() |
从上向下看来,也就明白了Writer肯定也是一个抽象类,实现了Appendable、Closeable、Flushable这三个接口,然后再结合文档可知该类是用于写入字符流的抽象类。子类必须实现的抽象方法是write(char [],int,int),flush()和close()。但是,大多数子类将覆盖此处定义的某些方法,以提供更高的效率或附加功能。
总结
java中的io类大多都是从这四个类派生而来,所以先介绍下这四个类其实有利于理清很多东西。其中Inputstream、Outstream是一类,操作的主要是字节数组byte[];而Reader、Writer是一类,操作的主要是字符数组char[]。