22《重学JAVA》--字节流
一、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,因此使用时要注意处理异常。