我们假设我有以下内容:
final ByteArrayOutputStream boas = new ByteArrayOutputStream();
final byte[] sample = {1,2,3,4,5,6,7,8,9,10};
boas.write(sample);
Run Code Online (Sandbox Code Playgroud)
此时,byte buf[]内部的后备数组boas包含上面的10个字节(和22个填充字节).
如果我boas在count和上调用reset ,size并且所有其他因素都表明它是空的,但内部byte buf[]保持不变并填充.
无论如何要真正清除这一点而不创造一个全新的ByteArrayOutputStream?
更一般地说,ByteArrayOutputStream是否有这样的行为而不是清空byte[]?
对Javadoc ByteArrayOutputStream.reset()状态
count将此字节数组输出流的字段重置为零,以便丢弃输出流中当前累积的所有输出.可以再次使用输出流,重用已分配的缓冲区空间.
性能方面,重用已分配的缓冲区是有意义的.
如果您想要一个不同的行为,您可以从中派生一个类ByteArrayOutputStream并覆盖它reset().这两个buf[]和count保护成员,因此,例如,你可以清除buf,如果你想要的.
| 归档时间: |
|
| 查看次数: |
8140 次 |
| 最近记录: |