1.InputStream和Reader
InputStream和Reader是所有输入流的基类,作为抽象类,不能创建实例,但是它们的方法是所有输入流都能使用的。
InputSteam的三个方法:
→int read():从输入流中读取单个字节,然后返回读取的字节数据(字节数组直接转换为int类型)。
→int read(byte[] b):从输入流中最多读取b.length个字节的数据,然后将数据存储在数组b中,最后返回实际读取的字节数。
→int read(byte[] b ,int off ,int length):从输入流中读取最多length个字节的数据,然后保存在数组b中以off位置为起点,最后返回实际读取的字节数。
Reader的三个方法:
→int read():从输入流中读取单个字符,然后返回读取的字符(字符数组直接转化为int类型)。
→int read(char[] ch):从输入流中最多读取ch.length个字符,然后将读取到的字符数据存储到数组ch中,最后返回实际读取的字符个数。
→int read(char[] ch ,int off ,int length):从输入流中读取最多length个字符,然后将读取到的字符存储到数组ch中,并且存储在数组的位置以off开始。
我们以FileInputStream和FileReader(读取文件的输入流)为例子:


2.OutputStream和Writer
OutputStream和Writer的三个方法:
→void write(int c):将指定的c输出到输出流,int 类型c占32位,但只写入c的8个低位,24个高位忽略。
→void write(byte[]/char[] buff):将字节数组/字符数组输出到输出流。
→void write(byte[]/char[] buff ,int off ,int length):将字节/字符数组从off位置开始,输出长度为length的字节/字符。
同时,Writer输出流的write方法可以直接使用字符串输出到输出流。
我们看代码例子:


最后我们给上图理解各种流之间的关系:
InputStream和OutputStream

Reader和Writer

网友评论