Filter Streams 使我想起了linux中的管道,两者何其相像。
比如现在想从网络上接收一个加密并且压缩过的文件,在JAVA中应该如何处理。
- 通过httpConnection.getInputStream();得到一个inputstream
- 使用BufferedInputStream,来加速读取速度
- 使用CipherInputStream,对数据解密
- 使用GZIPInputStream对数据解压缩
- 使用InputStreamReader把解压缩后的数据转为JAVA中的unicode编码
每一步的输入都是上一步的输出,并且为下一步提供输出
下面的代码片段展示了如果把各个filter stream串联起来,它实现了从文件中读取数据的功能: