字节流和字符流

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(读取文件的输入流)为例子:


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方法可以直接使用字符串输出到输出流。

我们看代码例子:


FileOutputStream实例


FileWriter实例



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

InputStream和OutputStream



Reader和Writer


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容