Java I/O系统
流流的概念输入/输出流的概念输入流输出流
流的分类
输入/输出类InputStream的类层次OutputStream的类层次I/O流的链接Reader的类层次Writer的类层次
流
流的概念
Java程序通过流来完成输入/输出。流是生产或消费信息的抽象。流通过Java的输入/输出系统与物理设备连接。尽管与它们连接的物理设备多式多样,但流的行为方式相同。这样,我们在使用流的时候不需要考虑外部设备的问题。
输入/输出流的概念
输入/输出是相对于程序来说的。如果流传入程序,那它就是输入流;如果程序要通过流传输数据出去,那就要使用输出流。
输入流
读数据的逻辑:
获取一个输入流通过循环来获取并读取数据关闭流
输出流
获取一个输出流通过循环来获取并输出数据关闭流
流的分类
节点流:从特定的地方读写的流类。例如:磁盘或一块内存区域。过滤流:可以理解为用来包装节点流的,为流丰富了功能。
输入/输出类
从功能上分:输入流和输出流。从流结构上分:字节流和字符流。注意:数据传输在最底层都是以字节的形式。Java在1.0版本时,还只有字节流。由于Unicode用于字符国际化(Java本身的cahr也是16位的Unicode),所以在1.1版本中添加了字符流,方便程序员操作。字节流的输入/输出流的基础抽象类是InputStream/OutputStream。字符流的输入/输出流的基础抽象类是Reader/Writer。
InputStream的类层次
从图中的继承关系可以看出,从InputStream继承下来的除了FilterInputStream是过滤流外,都是节点流。
OutputStream的类层次
从图中的继承关系可以看出,从OutputStream继承下来的除了FilterOutputStream是过滤流外,都是节点流。
I/O流的链接
程序员真正进行操作的是DataOutputStream对象:
DataOutputStream stream
= new DataOutputStream(new BufferedOutpuStream(new FileOutputStream()));
Reader的类层次
Writer的类层次