Bootstrap

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,因此使用时要注意处理异常。