gpt4 book ai didi

java - FilterOutpuStream是否正常写入?

转载 作者:行者123 更新时间:2023-11-30 04:18:25 25 4
gpt4 key购买 nike

甲骨文documentation说:

write(byte[] b, int off, int len) throws IOException

Writes len bytes from the specified byte array starting at offset offto this output stream. The write method of FilterOutputStream callsthe write method of one argument on each byte to output.

Note that this method does not call the write method of its underlyinginput stream with the same arguments. Subclasses of FilterOutputStreamshould provide a more efficient implementation of this method.

我有两个问题:

  1. this我发现代码使用 FilterOutputStream 来装饰 FileOutputStream,并将正常输出写入文件。为什么 FilterOutputStream 在每个字节上调用底层流的 write() 方法,而它能够在底层流上调用相同的重载并使操作更快?
  2. 为什么底层流是输入流?

谢谢。

最佳答案

  1. 我相信重点是,如果您想要一个非常简单的过滤器,您只需重写 write(int) 方法,并且知道一切都会通过那个。这虽然效率低下,但是有效。因此,如果您想要一个过滤掉每个偶数字节的流,您可以轻松做到这一点:

    public class OddByteOutputStream extends FilterOutputStream
    {
    public OddByteOutputStream(OutputStream output)
    {
    super(output);
    }

    @Override
    public void write(int b)
    {
    if ((b & 1) == 1)
    {
    out.write(b);
    }
    }
    }

    另一种方法是使 write(byte[]) 委托(delegate),但使 write(int)write(byte[], int , int) 抽象,强制子类找出如何合理有效地处理调用。

  2. 我怀疑这只是一个拼写错误。

关于java - FilterOutpuStream是否正常写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17760564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com