处理流的用法

一 概述

通过使用处理流,Java程序无须理会输入/输出节点是磁盘、网络还是其他的输入/输出设备,程序只要将这些节点包装成处理流,就可以使用相同的输入/输出代码来读写不同的输入/输出设备的数据。

二 处理流的用法

图15.7显示了处理流的功能,它可以隐藏底层的设备上节点流的差异,并对提供更加方便的输入/输出方法,让程序员只关心高级流的操作。

使用处理流的典型的思路是,使用处理流包装节点流,程序通过处理流来执行输入/输出功能,让节点流与底层的IO设备、文件交互。

实际上识别处理流很简单,只要流的构造参数不是一个物理节点,而是已经存在的流,那么这种流就一定是处理流;而所有节点流都是直接以物理IO节点作为构造器。

在使用处理流包装了底层节点流之后,关闭输入/输出流资源时,只要关闭最上层的处理流即可。关闭最上层的处理流时,系统自动关闭被该处理流包装的节点流。

处理流的优势:

  • 对开发人员来说,使用处理流输入/输出操作更加简单;
  • 使用处理流的执行效率更高。

 三 字节流和字符流的选择问题
 

標題

通常来说,字节流的功能比字符流的功能强大,因为计算机所有的数据都是二进制的,而字节流可以处理所有的二进制文件----但问题是,如果使用字节流处理文本文件,则需要使用合适的方式把这些字节转换为字符,这就增加的编程的复杂度。所以有一个规则:如果进行输入/输出的内容是文本内容,则应该考虑使用字符流,如果进行输入/输出的内容是二进制内容,则应该考虑使用字节流。

其中有一些以数据为物理节点的节点流,字节流以数组为节点,字符流以字符数组为节点;这种以数组为物理节点的节点流除了在创建节点流对象时需要传入一个字节数组或者字符数组之外,用法上与文件节点流完全类似。一次类似的是,字符流还可以使用字符串作为物理节点,用于实现字符串读取内容,或者将内容写入字符串(StringBuffer充当字符串)的功能。

缓冲流:

缓冲流增加了缓冲功能,增加缓冲功能可以提高输入、输出的效率,增加缓冲功能后需要使用flush()才可以将缓冲区的内容写入到实际的物理节点。

猜你喜欢

转载自blog.csdn.net/qfc8930858/article/details/89601283