【精选】过滤流 | 您所在的位置:网站首页 › 什么是错流过滤 › 【精选】过滤流 |
过滤流类型
过滤流就是在节点流的基础上附加功能 处理类型 字符流 字节流 缓存 BufferedReader、BufferedWriter BufferedInputStream、 BuàeredOutputStream 过滤处理 FilterReader、FilterWriter FilterInputStream、FilterOutputStream 桥接处理 InputStreamReader、 OutputStreamWriter 对象序列化处理 ObjectInputStream、 ObjectOutputStream 数据转换 DataInputStream、DataOutputStream 行数统计 LineNumberReader LineNumberInputStream 回滚处理 PushbackReader PushbackInputStream 打印功能 PrintWriter PrintStream过滤流 FilterInputStream/FilterOutputStream和FilterReader/FilterWriter public class FilterInputStream extends InputStream { //典型的装饰模式 protected volatile InputStream in; //被装饰目标 protected FilterInputStream(InputStream in) { //通过构造器组装被装饰对象 this.in = in; } public int read() throws IOException { //调用Filter中的read方法时实际操作是由被装饰对象实现 的 return in.read(); } }所谓的过滤流实际上就是类似上面的加密处理,在输入之后(后置处理,被装饰对象先执行)或者输出之前(前置 处理,先处理然后被装饰对象执行)进行一下额外的处理,最终实际操作是调用被装饰对象的方法完成工作,依靠 这种装饰模式实现在节点流的基础上附加额外功能.当然也允许多个过滤流嵌套从而达到功能累加的目的 FilterInputStream实际上就是一个装饰抽象角色 自定义流实现循环13加密: 读取数据不变:FileReader—BuàeredReader 写出数据自定义过滤流SecurityWriter(FilterWriter) public class SecurityWriter extends FilterWriter { protected SecurityWriter(Writer out) { super(out); } public void write(int c) throws IOException { if (c >= 'a' && c c = (c - 'A' + 13) % 26 + 'A'; } super.write(c); } } public class SecurityReader extends FilterReader { protected SecurityReader(Reader in) { super(in); } public int read() throws IOException { int c = super.read(); if (c >= 'a' && c c = (c - 'A' + 13) % 26 + 'A'; } return c; } } 桥接转换流InputStreamReader和OutputStreamWriter提供了字节流和字符流之间的桥接转换功能,用于与字节数据到字符 数据之间的转换,无需编程实现将字节拼接为字符 转换流可以在构造时指定其编码字符集 InputStreamReader用于将一个InputStream |
CopyRight 2018-2019 实验室设备网 版权所有 |