如何从InputStream获取SelectableChannel?

我想从超时的java.io.InputStream中读取。 显然,正确的方法是使用java.nio.channels.SelectableChannel和java.nio.channels.Selector。 不幸的是,目前还不清楚如何从InputStream转到SelectableChannel。

InputStream来自非传统来源 – http://java.sun.com/products/javacomm/reference/api/javax/comm/CommPort.html#getInputStream()

并非所有的InputStream都可以保证可选,因此没有直接的方法可以做到这一点。 不幸的是, CommPort类没有返回SelectableChannel的方法; 没有简单,便携的方法来实现这一点(即,没有完全破坏封装)。

NIO在这方面受到打击。 你所要做的就是在代码中查看一下,看看所有需要通道的转换器都是SocketChannel等。不可能在NIO中重用任何类型的基于文件描述符的I / O通道,就像它应该的那样。

最后我问过没有计划为通用重用修复此问题。