22《重学 JAVA》-- 字节流
![22《重学JAVA》--字节流](https://static001.geekbang.org/infoq/88/88ad9cc213a99705d9a9c313d8d14fa4.jpeg)
一、IO 流描述
Java 将数据的输入输出(I/O)操作当作“流”来处理,“流”是一组有序的数据序列。
“流”分为两种形式:输入流和输出流,从数据源中读取数据是输入流,将数据写入到目的地是输出流。
以 CPU 为中心,从外部设备读取数据到内存,进而再读入到 CPU,这是输入(Input,缩写 I)过程;将内存中的数据写入到外部设备,这是输出(Output,缩写 O)过程。所以输入输出简称为 I/O。
输入流:只能从中读取数据,而不能向其写入数据。
输出流:只能向其写入数据,而不能向其读取数据。
一、字节输入流描述
InputStream 是字节输入流的根类,它定义了很多方法,影响着字节输入流的行为。
InputStream 主要方法如下:
intread():读取一个字节,返回 0 到 255 范围内的 int 字节值。如果已经到达流末尾,而且没有可用的字节,则返回值-1。
intread(byteb[]):读取多个字节,数据放到字节数组 b 中,返回值为实际读取的字节的数量,如果已经到达流末尾,而且没有可用的字节,则返回值-1。
intread(byteb[],intoff,intlen):最多读取 len 个字节,数据放到以下标 off 开始字节数组 b 中,将读取的第一个字节存储在元素 b[off]中,下一个存储在 b[off+1]中,依次类推。返回值为实际读取的字节的数量,如果已经到达流末尾,而且没有可用的字节,则返回值-1。
voidclose():流操作完毕后必须关闭。
二、字节输出流描述
OutputStream 主要方法:
voidwrite(intb):将 b 写入到输出流,b 是 int 类型占有 32 位,写入过程是写入 b 的 8 个低位,b 的 24 个高位将被忽略。
voidwrite(byteb[]):将 b.length 个字节从指定字节数组 b 写入到输出流。
voidwrite(byteb[],intoff,intlen):把字节数组 b 中从下标 off 开始,长度为 len 的字节写入到输出流。
voidflush():刷空输出流,并输出所有被缓存的字节。
voidclose():流操作完毕后必须关闭。
上述所有方法都声明抛出 IOException,因此使用时要注意处理异常。
版权声明: 本文为 InfoQ 作者【杨鹏Geek】的原创文章。
原文链接:【http://xie.infoq.cn/article/0278bdde7d8861043dbf2d3d5】。文章转载请联系作者。
评论