gpt4 book ai didi

java - 是否可以清除 ByteArrayOutputStream

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:24 25 4
gpt4 key购买 nike

假设我有以下内容:

final ByteArrayOutputStream boas = new ByteArrayOutputStream();
final byte[] sample = {1,2,3,4,5,6,7,8,9,10};
boas.write(sample);

此时 boas 中的后备数组 byte buf[] 包含上面的 10 个字节(和 22 个填充字节)。

如果我在 boas 上调用 reset,countsize 以及所有其他因素表明它是空的,但在内部 byte buf[] 保持不变并填充。

有没有办法在不创建全新的 ByteArrayOutputStream 的情况下真正清除它?

更一般地说,为什么 ByteArrayOutputStream 会这样而不是清空 byte[]

最佳答案

ByteArrayOutputStream.reset() 的 Javadoc 状态

Resets the count field of this byte array output stream to zero, so that all currently accumulated output in the output stream is discarded. The output stream can be used again, reusing the already allocated buffer space.

在性能方面,重用已分配的缓冲区是有意义的。

如果您想要不同的行为,您可以从 ByteArrayOutputStream 派生一个类并覆盖 reset()buf[]count 都是 protected 成员,因此例如您可以根据需要清除 buf

关于java - 是否可以清除 ByteArrayOutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35450584/

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