没有IO流,NIO通道就不存在



在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。

相关内容

最新更新