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...

Java IO经典书籍

  • 2017-09-18 10:00
  • 5.14MB
  • 下载

java流IO思维导图

  • 2017-09-11 16:38
  • 2.43MB
  • 下载

JAVA IO(三)

java中IO分类 按照数据流向分:输入流—————-输出流 按照数据单位:字节流——————字符流 按照是否直接和数据源相连:节点流———处理流一,字节流转换成字符流(转换流) 用InputS...

Java IO NIO and NIO 2 epub

  • 2017-09-30 21:43
  • 1.35MB
  • 下载

java 利用io进行文件拷贝

  • 2015-12-14 15:09
  • 733B
  • 下载

Java基础——IO流(下)之字节流

个人小结:数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。根据处理数据类型的不同可分为:字符流和字节流。本篇主要介绍IO流中的字节流。

Java io流总结

  • 2017-08-12 11:05
  • 124KB
  • 下载

Java 网络IO简介

  • 2015-06-08 23:22
  • 781KB
  • 下载

struts2文件下载出现Can not find a java.io.InputStream with the name的错误

今天在用struts2就行文件下载时出现如下错误: Servlet.service() for servlet default threw exception   java.lang.Illeg...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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