6. Java过滤器概论
前面章节讲到的各种Java流,包括文件流、字节数组流、管道流等等被称之为原始流,它们提供了对某类数据的输入输出功能。为了在流处理的过程中简化和标准化某一类功能,例如缓冲、压缩、加密、摘要等,Java提供了一系列过滤器类,每组类提供了一种典型的信息处理功能。根据操作对象是字节还是字符,过滤器又分为过滤器流和阅读器/书写器两类,举例如下:
- BufferedInputStream/BufferedOutputStream提供了字节流的缓冲功能;
- BufferedReader/BufferedWriter提供了字符流的缓冲功能;
- DataInputStream/DataOutputStream用来将java的简单数据类型和字符串保存为二进制格式,并从二进制格式读取;
- ZipInputStream/ZipOutputStream提供了字节流的zip格式压缩功能;
- GZIPInputStream/GZIPOutputStream提供了字节流的gzip格式压缩功能;
- DigestInputStream/DigestOutputStream提供了字节流的信息摘要功能;
- CipherInputStream/CipherOutputStream提供了字节流的加密解密功能;
6.1 过滤器使用规则
过滤器可以和其他过滤器、原始流和阅读器/书写器链接使用,但要遵守以下规则:
- 过滤器流可以置于原始流或其他过滤器流之上;
- 阅读器/书写器可置于原始流、过滤器流或其他阅读器/书写器之上;
- 过滤器流不能放在阅读器/书写器之后。