我的使用场景是一个方法接受InputStream参数并从中读取数据。该方法在自己的线程中运行,如果输入流被关闭,我想终止该线程。
InputStream实现Closeable接口,提供了close()方法,但显然没有查询实例是否已经关闭的方法。
尝试从已关闭的InputStream读取将抛出IOException,但这可能有其他原因,并且接口契约中没有说明这种情况是永久的还是在某些情况下会消失。
我的方法的调用者可以提供他们希望的任何InputStream子类,因此依赖于特定子类的行为不是一个选择。
还有其他想法吗?
Channel
,则可以使用isOpen()
。 - teppicInputStream
是一个抽象类。在你使用的子类中,你应该重写available()
方法,如 此 API 文档所述... - zlakadInputStream
参数,调用者可以传递任何他们想要的InputStream
子类(我刚编辑了我的问题来反映这一点)。 - user149408