正文
Java中的I/O输入输出流概述
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
流是一组有序的数据序列,根据操作类型,可以分为输入流和输出流两种,Java语言中定义的负责各种输入输出的类都被放在java.io包中。其中所有的输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类;而所有的输出流都是抽象类OutStream(字节输出流)或抽象类Writer(字符输出流)的子类。
一. 输入流
1. InputStream类是字节输入流的抽象类,是所有字节输入流的父类,其层次结构为:
图1 InputStream类的层次结构
该类中所有方法遇到错误都会引发IOException异常,简要说明部分方法:
- read()方法:从输入流中读取数据的下一个字节。返回0~255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回-1.
- read(byte[] b):从输入流中读入一定长度的字节,并以整数的形式返回字节数。
- mark(int readlimit)方法:在输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数。
- reset()方法:将输入指针返回到当前所做的标记处。
- skip(long n)方法:跳过输入流上的n个字节并返回实际跳过的字节数。
- markSupported()方法:如果当前流支持mark()/reset()操作就返回True。
- close()方法:关闭此输入流并释放与该流关联的所有系统资源。
2. Reader类是字符输入流的抽象类,所有的字符输入流都是它的子类,其层次结构为:
图2 Reader类的层次结构
Reader类中方法与InputStream类中的方法类似。
二. 输出流
1. OutputStream类是字节输出流的抽象类,此抽象类是表示输出字节流的所有类的超类,其层次结构为:
图3 OutputStream类的层次结构
OutputStream类中的所有方法均返回void,在遇到错误时引发IOException异常,简单说明部分方法:
- write(int b)方法:将指定的字节写入此输出流。
- write(byte[] b)方法:将b个字节从指定的byte数组写入此输出流。
- write(byte[] b, int off, int len)方法:将指定byte数组中从偏移量off开始的len个字节写入此输出流。
- flush()方法:彻底完成输出并清空缓存区。
- close()方法:关闭输出流。
2. Write类是字符输出流的抽象类,所有的字符输出类都是它的子类,其层次结构为:
图4 Writer类的层次结构
在学习过程中做做笔记。