Java IO - FilterReader&FilterWriter

原创 2016年05月31日 20:04:10

基本概念

字符过滤流(FilterReader/FilterWriter)与 字节过滤流(FilterInputStream / FilterOutputStream )的原理一致,都是通过操作要过滤的流本身的方法来实现。

不同就是字符过滤流是抽象类,而字节过滤流不是。


源码分析

1.FilterReader

类结构图

这里写图片描述


观察源码,发现在 FilterReader 中不外乎地都调用流本身的方法来实现各种操作,这点与 FilterInputStream 一致。

public abstract class FilterReader extends Reader {
    //代表要操作的流
    protected Reader in;

    protected FilterReader(Reader in) {
        super(in);

        // 将流赋于成员变量 in,说明操作的并不是输入流本身
        this.in = in;
    }

    public int read() throws IOException {
        return in.read();
    }

    public int read(char cbuf[], int off, int len) throws IOException {
        return in.read(cbuf, off, len);
    }

    public long skip(long n) throws IOException {
        return in.skip(n);
    }

    public boolean ready() throws IOException {
        return in.ready();
    }

    public boolean markSupported() {
        return in.markSupported();
    }

    public void mark(int readAheadLimit) throws IOException {
        in.mark(readAheadLimit);
    }

    public void reset() throws IOException {
        in.reset();
    }

    public void close() throws IOException {
        in.close();
    }

}

2.FilterWriter

类结构图

这里写图片描述


与字节过滤流不同:

  • write 操作全部调用输出流本身的方法。

  • 调用 close 方法之前不会调用 flush 方法。

public abstract class FilterWriter extends Writer {
    // 表示要过滤的输出流
    protected Writer out;

    protected FilterWriter(Writer out) {
        super(out);

        // 将流赋于成员变量 out,说明操作的并不是输出流本身
        this.out = out;
    }

    public void write(int c) throws IOException {
        out.write(c);
    }

    public void write(char cbuf[], int off, int len) throws IOException {
        out.write(cbuf, off, len);
    }

    public void write(String str, int off, int len) throws IOException {
        out.write(str, off, len);
    }

    public void flush() throws IOException {
        out.flush();
    }

    public void close() throws IOException {
        out.close();
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Java_io体系之FilterWriter、FilterReader简介、走进源码及示例——15

Java_io体系之FilterWriter、FilterReader简介、走进源码及示例——14 一:FilterWriter 1、类功能简介:         字符过滤输出流、与Fil...
  • chenghuaying
  • chenghuaying
  • 2013年12月08日 20:50
  • 2085

java IO流案例详解

流的概念和作用 学习Java IO,不得不提到的就是JavaIO流。 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据...
  • qilixiang012
  • qilixiang012
  • 2014年09月18日 17:38
  • 1933

Java中的IO技术使用总结

请尊重他人劳动成果,请勿随意剽窃,转载请注明,谢谢!转载请注明出处:http://blog.csdn.net/evan_man/article/details/51812678          ...
  • evan_man
  • evan_man
  • 2016年07月21日 15:21
  • 2203

java的IO简单实例

  • 2015年07月25日 18:24
  • 17KB
  • 下载

java 教程io

  • 2016年04月05日 01:52
  • 3.23MB
  • 下载

Java学习笔记-IO篇

  • 2015年03月25日 14:53
  • 30KB
  • 下载

Java commons-io-2.4

  • 2017年11月21日 09:56
  • 2.18MB
  • 下载

Java IO NIO and NIO 2 无水印pdf

  • 2017年09月30日 21:46
  • 4.34MB
  • 下载

java io file 文件复制

  • 2017年09月29日 09:21
  • 6KB
  • 下载

java-io-file类笔记

  • 2015年09月10日 00:43
  • 42KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java IO - FilterReader&FilterWriter
举报原因:
原因补充:

(最多只允许输入30个字)