假设我有以下内容:
final ByteArrayOutputStream boas = new ByteArrayOutputStream();
final byte[] sample = {1,2,3,4,5,6,7,8,9,10};
boas.write(sample);
此时,
byte buf[]
中的后备数组boas
包含上面的10个字节(和22个填充字节)。如果我在
boas
上调用reset,则count
和size
以及所有其他因素表明它为空,但内部byte buf[]
保持不变并已填充。是否有任何方法可以在不创建全新的
ByteArrayOutputStream
的情况下真正解决此问题?更一般而言,是否存在为什么ByteArrayOutputStream如此行为而不是清空
byte[]
的原因? 最佳答案
ByteArrayOutputStream.reset()
状态的Javadoc
在性能方面,重用已经分配的缓冲区是有意义的。
如果您想要其他行为,则可以从ByteArrayOutputStream
派生一个类,并覆盖reset()
。 buf[]
和count
都是 protected 成员,因此,例如,您可以根据需要清除buf
。
关于java - 是否可以清除ByteArrayOutputStream,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35450584/