Java程序中,对于数据的输入输出操作以“流”( stream )的方式进行。java . io包下提供了各种“流”的类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。

  Java的输入输出流体系提供了几十个类,下面按照功能将常用流进行分类梳理,如表1所示。

Java输入输出流体系中常用的流分类

分类

字节输入流

字节输出流

字符输入流

字符输出流

抽象父类

InputStream

OutputStream

Reader

Writer

访问文件

FileInoutStream

FileOutStream

FileReader

FileWriter

访问数组

ByteArrayInputStream

ByteArrayOutStream

CharArrayReader

CharArrayWriter

访问管道

PipedInputStream

PipedOutStream

PipedReader

PipedWriter

访问字符串

 

 

StringReader

StringWriter

缓冲流

BufferedInputStream

BufferedOutStream

BufferedReader

BuferedWriter

转换流

 

 

InputStreamReader

OutputStreamWriter

对象流

ObjectInputStream

ObjectOutputStream

 

 

装饰流

FileterInputStream

FileterOutputStream

FileterReader

FileterWriter

打印流

 

PrintStream

 

PrintWriter

数据过滤流

DataInputStream

DataOutputStream

 

 

 

InputStream和Reader是所有遍入流的基类,OutputStream和Xriter是所有输出道的是F类S和Sm是字节流的抽象父类,以字节为单位进行VO操作,Rowts和Writer是字符流的抽象父类,以字符为单位进行I/O操作。资源。

( 1 ) InputStream类

InputStream用来表示那些从不同数据源产生输入的类,这些数据源包括字节数组void write ( in void write ( ( ByteArrayInputStream )、字符串( StringBufferlnputStream )、文件( FileInputStream )、管道void write ( ( PipedInputStream )、流序列( SequenceInputStream )以及网络连接。InputStream类中定义的几种常用的方法:

①int read ( ),从输入流中读取数据的一个字节,返回0~255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回值为- 1。

②int read ( byte [ ] b ),从输入流中将最多b. length个字节的数据读入一个byte数组中,到指定输出流以整数形式返回实际读取的字节数。如果因为已经到达流末尾而没有可用的字节,则返回值void f为- 1。

③int read ( byte [ ] b , int off , int len ),将输入流中最多len个数据字节读入byte数组。资源。尝试读取len个字节,但读取的字节也可能小于该值。以整数形式返回实际读取的字节数。如果因为流位于文件末尾而没有可用的字节,则返回值为- 1。

④public void close ( ) throws IOException,关闭此输入流并释放与该流关联的所有系统资源。


( 2 ) OutputStream类OutputStream表示输出要去往的目标,如字节数组( ByteArayOutputStream )、文件(FileOutStream)或者管道( PisOutputstram )。OutputStream共中定义的几种能用力法

①void write ( int b ),将指定的字节写入此输出流。要写人的字节是参数b的8个低位,b的24个高位将被忽略,即写入范围为0-255。

② void write ( byte [ ] b ),将b. length个字节从指定的byte数组写入此输出流。

③void write ( byte [ ] b , int off , int len ),将指定byte数组中从偏移量off开始的len个字节写入此输出流。

④public void flush ( ) throws IOException ,刷新此输出流并强制写出所有缓冲的输出字节,调用此方法指示将这些字节立即写入它们预期的目标。

⑤public void close ( ) throws IOException ,关闭此输出流并释放与该流关联的所有系统全选资源。


( 3 ) Reader类恢复查找C C Reader类中定义了以下几个常用的方法:

①int read ( ),从输入流中读取单个字符。Java采用Unicode编码为每个字符分配2字丁印节的存储空间,故read()方法将返回读取的2字节字符数据的Unicode编码。如果已到达流的末尾,则返回- 1。

②int read ( char [ ] cbuf ),从输入流中最多读取cbuf. length个字符的数据,并将其存储在字符数组cbuf中,返回实际读取的字符数。如果已到达流的末尾,则返回- 1。

③int read ( char [ ] cbuf , int off , int len ),从输入流中最多读取len个字符的数据,并将其存储在字符数组cbuf中,从数组的off位置开始存储。如果已到达流的末尾,则返回- 1。

④public void close ( ) throws 1OException ,关闭此输入流并释放与该流关联的所有系统资源。


( 4 ) Writer类Writer类中定义以下几个常用方法:

①void write ( int c ),将单个指定字符输出到指定的输出流。

②void write ( char [ ] cbuf ),将字符数组cbuf中的数据输出到指定的输出流。

③void write ( char [ ] cbuf , int off , int len ),将字符数组cbuf从off位置开始的len个字符输出到指定流。

④void write ( String str ),将str字符串中的字符输出到指定输出流。

⑤void write ( String str , int off , int len ),将str字符串中从off位置开始的len个字符输出到指定输出流。

⑥void flush ( ),刷新该流的缓冲。

⑦public void close ( ) throws IOException ,关闭此输出流并释放与该流关联的所有系统资源。