【精选】过滤流 您所在的位置:网站首页 什么是错流过滤 【精选】过滤流

【精选】过滤流

2023-11-18 08:50| 来源: 网络整理| 查看: 265

过滤流类型

过滤流就是在节点流的基础上附加功能

处理类型 字符流 字节流 缓存 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 实验室设备网 版权所有