我创建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/