IO
概念
java 的 io 是实现输入和输出的基础,可以方便的实现数据的输入和输出操作。在java中把不同的输入/输出源(键盘、文件、网络连接等)抽象的表述为“流”(stream)
- I/O是Input/Output的缩写,I/O技术是非常使用的技术,用于处理设备之间的数据传输
- Java程序中,对于数据的输入/输出操作以“流”的方式进行
- java.io包下提供了各种“流”类和接口,用以获取不同类的数据,并通过标准的方法输入或输出数据
流的分类
- 按操作数据单位不同分为:字节流(8 bit),字符流(18 bit)
- 按数据流的流向不同分为:输入流,输出流
- 按流的角色不同分为:节点流,处理流
抽象基类 | 字节流 | 字符流 |
---|---|---|
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
- Java 的IO流共涉及40多个类,实际上非常规则,都是从如上四个抽象基类派生的
- 由这四个类派生出来的子类名称都是以其父类的名称作为子类名后缀
输入流
InputStream 类是字节输入流的抽象类,是所有字节输入流的父类。
- read()方法:从输入流中读取数据的 下一个字节。返回0~255范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回值为-1
- read(byte[] b):从输入流中读入一定长度的字节,并以整数的形式返回字节数
- mark(int readlimit)方法:在输入流的当前位置放置一个标记,readlimit 参数告知此输入流在标记位置失效前允许读取的字节数
- reset()方法:将输入指针返回当前所做的标记处
- skip(long n)方法:跳过输入流上的n个字节并返回实际跳过的字节数
- markSupported()方法:如果当前流支持 mark()/reset() 操作就返回true
- close 方法:关闭此输入流并释放与该流关联的所有系统资源
java 中的字符是 Unicode编码,是双字节的。InputStream 是用来处理字节的,并不适合处理字符文本
Java 为字符文本的输入专门提供了单独的类Reader,Reader 类是字符输入流的抽象类,所有字符输入流的实现都是他的子类。
输出流
OutputStream 类是字节输出流的抽象类,此抽象类是表示输出字节流的所有类的超类。
OutputStream 类中的所有方法均返回 void,在遇到错误时会引发 IOException异常
- write(int b)方法:将指定的字节写入此输出流
- write(byte[] b)方法:将b个字节从指定的 byte 数组写入此输出流
- write(byte[] b,int off,int len)方法:将指定byte 数组中从偏移量 off 开始的 len 个字节写入此输出流
- flush()方法:彻底完成输出并清空缓存区
- close()方法:关闭输出流
Writer 类是字符输出流的抽象类,所有字符输出流的实现都是他的子类。