在H.Shildt的书中,我读过:
没有上下文,频道就不存在。它们的上下文是java.io.中的一系列I/O流类
我在学习NIO时也看到过这种说法,但次数很少。
无论如何,以下代码在不创建I/O流的情况下工作。为什么?什么变体是正确的——有或没有IO流?
try (FileChannel channel = (FileChannel)
Files.newByteChannel(Paths.get("test.txt")) ) {
// some code
} catch(...)
Channels类定义了静态方法,这些方法支持java.io包的流类与java.nio包的通道类的互操作。
除了互操作性的原因之外,如果直接使用java.nio api(具体为jdk 7或更高版本(,则不需要这样做。
更多信息:https://docs.oracle.com/javase/7/docs/api/java/nio/channels/Channels.html
因此,这里引用的可能是Java util类Channels,而不是一般意义上的w.r.t到Java.nio。
我不认为这句话意味着有一个特定的技术要求,即在没有另一个的情况下存在。
在我看来"上下文";在这种情况下是指";当试图理解这个主题时,了解有用的情况";。
换句话说:I/O流类是在Java中进行I/O的原始方式。NIO是它之上的一个进化。NIO不一定需要基本的流类,但理解这些原始概念将有助于理解NIO。