当前位置: 首页 > 教程 > Java IO流 >

Java FilterReader

精华
小牛编辑
104浏览
2023-03-14

1 什么是Java FilterReader

Java FilterReader用于对读取器流执行过滤操作。它是用于读取过滤的字符流的抽象类。

FilterReader提供将所有请求传递到所包含的流的默认方法。FilterReader的子类应覆盖其某些方法,并且可能还提供其他方法和属性。

2 Java FilterReader的属性

修饰符&返回值 属性名 描述
protected Reader in 底层字符输入流。

3 Java FilterReader的构造方法

修饰符 构造方法 描述
protected FilterReader(Reader in) 将创建一个新的FilterReader。

4 Java FilterReader的方法

修饰符 方法 描述
void close() 关闭流并释放与其关联的所有系统资源。
void mark(int readAheadLimit) 标记了流中的当前位置。
boolean markSupported() 告诉此流是否支持mark()操作。
boolean ready() 告诉此流是否已准备好被读取。
int read() 读取一个字符。
int read(char[] cbuf, int off, int len) 将字符读入数组的一部分。
void reset() 重置流。
long skip(long n) 跳过字符。

5 Java FilterReader的例子

在此示例中,我们使用的"Record.txt"文件中包含“i love my country”文本。我们正在转换带有问号'?'的空格。

package cn.xnip;

/**
 * 小牛知识库网: https://www.xnip.cn
 */
/**
 *  Java FilterReader的例子
 */
import java.io.*;
class CustomFilterReader extends FilterReader {
    CustomFilterReader(Reader in) {
        super(in);
    }
    public int read() throws IOException {
        int x = super.read();
        if ((char) x == ' ')
            return ((int) '?');
        else
            return x;
    }
}
public class Demo {
    public static void main(String[] args) {
        try  {
            Reader reader = new FileReader("Record.txt");
            CustomFilterReader fr = new CustomFilterReader(reader);
            int i;
            while ((i = fr.read()) != -1) {
                System.out.print((char) i);
            }
            fr.close();
            reader.close();
        } catch (Exception e) {
            e.getMessage();
        }
    }
}

输出结果为:

i?love?my?country