Java检测封闭流

Der*_*rek 8 java sockets inputstream outputstream

我有一个由OutputStream和InputStream组成的通用套接字实现.

在我做了一些工作之后,我正在关闭OutputStream.

完成后,我的InputStream的read()方法返回-1无限的时间,而不是像我预期的那样抛出异常.

我现在不确定最安全的路线,所以我有一些问题:

  • 我可以安全地假设-1仅在流关闭时返回吗?
  • 是否无法重新创建强制断开连接时发生的IO异常?
  • 我应该发送一个数据包来告诉我的InputStream它应该关闭而不是前两个方法吗?

谢谢!

Whi*_*g34 7

-1是流末尾的预期行为.见InputStream.read():

从输入流中读取下一个数据字节.值字节作为int返回,范围为0到255. 如果没有字节可用,因为已到达流的末尾,则返回值-1.此方法将阻塞,直到输入数据可用,检测到流的末尾或抛出异常.

IOException当然应该抓住意想不到的事件.