- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
甲骨文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.
我有两个问题:
FilterOutputStream
来装饰 FileOutputStream
,并将正常输出写入文件。为什么 FilterOutputStream
在每个字节上调用底层流的 write()
方法,而它能够在底层流上调用相同的重载并使操作更快?谢谢。
最佳答案
我相信重点是,如果您想要一个非常简单的过滤器,您只需重写 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)
抽象,强制子类找出如何合理有效地处理调用。
我怀疑这只是一个拼写错误。
关于java - FilterOutpuStream是否正常写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17760564/
我是一名优秀的程序员,十分优秀!