我创建ByteArrayOutputStream barr = new ByteArrayOutputStream(1);,即容量为1字节,并向其写入1个字节以上的barr.write("123456789000000".getBytes());。没有错误发生,我检查barr的长度是15。为什么我的文字没有被阻止或包裹?有没有一种方法可以防止写入超出容量的范围,并且可以使用哪个outputstream
我的可用内存非常有限,不想超出我的限制定义

附言
非常感谢您的回答!我进行了跟进question
如果你能看的话那可能很棒

最佳答案

这是因为您为构造函数指定的容量是缓冲区的初始大小。如果写入更多数据,缓冲区将自动以更大的大小重新分配,以容纳更多数据。

据我所知,ByteArrayOutputStream无法限制缓冲区的增长。您可以改用其他名称,例如java.nio.ByteBuffer,其大小固定。

关于java - ByteArrayOutputStream容量限制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33018341/

10-09 20:02