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 ,关闭此输出流并释放与该流关联的所有系统资源。