Java 为什么您可以从tearrayoutputstream已经关闭的文件中读取数据?
我想知道为什么您仍然可以通过tearrayoutputstream从已经关闭的Java 为什么您可以从tearrayoutputstream已经关闭的文件中读取数据?,java,java-io,bytearrayoutputstream,Java,Java Io,Bytearrayoutputstream,我想知道为什么您仍然可以通过tearrayoutputstream从已经关闭的读取字节。文档中的这一行不是相反的意思吗 public void close():关闭此流。这将释放用于此流的系统资源 示例代码: String data = "Some string ..."; ByteArrayOutputStream bOut = new ByteArrayOutputStream(); DataOutputStream dOut = new DataOutputStream(bOut); dO
读取字节。文档中的这一行不是相反的意思吗
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]);
输出:
我做错什么了吗?只是复制缓冲区中的内容;它不再从溪流中读取任何内容
public synchronized byte[] toByteArray() {
return Arrays.copyOf(buf, count);
}
这门课也有点特别。请参阅和代码
关闭ByteArrayOutputStream无效。此类中的方法可以在流关闭后调用,而不会生成IOException
close()
实际上没有任何作用。当您通过TearrayOutputStream关闭时,您已经关闭了DataOutputStream
@MitulSanghani当您关闭一个流时,任何嵌套流也会关闭。好的,谢谢,我不知道这一点。因为这就是它的用途。如果你以后不能从中获取数据,那就没什么用了。好的,谢谢。我认为close()应该刷新下面的buf。但似乎没有
public synchronized byte[] toByteArray() {
return Arrays.copyOf(buf, count);
}
public void close() throws IOException {
}