真正的过滤流做什么?

i2i*_*eya 2 java stream filter

为什么使用过滤器流和哪里?我读到过滤器流将用于将所需信息放入流中.是否正确,如果是这样,我们如何从流中过滤以及它将在何处使用?

java.io.Filter ....

我的问题是很难理解为什么我们使用Filter流,因为我们可以使用其他流来完成大部分工作.

Gui*_*ume 9

我想你在谈论java.io.Filter*(比如FilterInputStream).

如果我们谈论FilterInputStream类,它只是一个不执行任何操作的InputStream的包装器.每次调用Filter的方法都会简单地调用包装的InputStream上的相应方法.一个人,这是没用的.

想象一下,你想要一个将每个"a"字符转换为"b"的InputStream.您可以扩展FilterInputStream并覆盖read()方法:

// this code has not been tested
class ABFilter extends FilterInputStream {
    public ABFilter (InputStream in) {
        super(in);
    }
    @Override
    public int read() {
        int character = super.read();
        if (character == 97)
            return 98;
        return character;
    }
    // similarly implement all other "read()" methods
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用此流来包装任何现有流:

InputStream streamWithA = ...;
InputStream streamWithoutA = new ABFilter(streamWithA);
Run Code Online (Sandbox Code Playgroud)