我想从超时的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()
答案 0 :(得分:2)
并非所有InputStream
都可以保证是可选的,因此没有直接的方法可以做到这一点。遗憾的是,CommPort
类没有返回SelectableChannel
的方法;没有简单,便携的方法来实现这一点(即,没有完全破坏封装)。
答案 1 :(得分:1)
NIO在这方面受到打击。您所要做的就是查看代码并查看所有需要通道为SocketChannel等的强制转换。不可能在NIO中重用任何类型的基于文件描述符的I / O通道,就像它应该的那样。
最后我问过没有计划为通用重用修复此问题。