【发布时间】:2015-06-29 18:35:24
【问题描述】:
我想知道为什么你仍然可以从已经关闭的ByteArrayOutputStream 中读取字节。文档中的这一行不是相反吗?
public void close ():关闭此流。这会释放用于该流的系统资源。
示例代码:
String data = "Some string ...";
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
DataOutputStream dOut = new DataOutputStream(bOut);
dOut.write(data.getBytes());
dOut.close();
System.out.println("Length: " + bOut.toByteArray().length);
System.out.println("Byte #2: " + bOut.toByteArray()[2]);
输出:
Length: 15
Byte #2: 109
我是不是做错了什么?
【问题讨论】:
-
在你关闭
ByteArrayOutputStream的地方,你已经关闭了DataOutputStream -
@MitulSanghani 当你关闭一个流时,任何嵌套的流也会被关闭。
-
好的,谢谢,我不知道..
-
因为这就是它的用途。如果您事后无法从中获取数据,那将没有多大用处。
标签: java java-io bytearrayoutputstream