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

NIO channels do not exist without IO streams?

我在 H. Shildt 的书中读到:

Channels do not exist without context. The context for these is a series of I/O stream classes from java.io.

我在学习NIO的时候也看到过这种说法,但是很少见。

无论如何,以下代码无需创建 I/O 流即可运行。为什么?哪种变体是正确的 - 有或没有 IO 流?

try (FileChannel channel = (FileChannel) 
    Files.newByteChannel(Paths.get("test.txt")) ) {
    
    // some code

} catch(...)

我认为这句话并不意味着存在一个没有另一个的特定技术要求。

在我看来,这种情况下的“上下文”是指“在尝试理解该主题时需要知道的有用情况”。

换句话说:I/O 流 类 原来在 Java 中做 I/O 的方式。 NIO 是在它之上的进化。 NIO不一定需要基本流类,但了解这些原始概念有助于理解NIO。

Channels class 定义支持 java.io 包的流 classes 与 java.nio 的通道 classes 的互操作的静态方法包。

除了互操作性原因之外,如果直接使用 java.nio api,则不需要 jdk 7 或更高版本。

更多信息:https://docs.oracle.com/javase/7/docs/api/java/nio/channels/Channels.html

所以这里的引用可能是参考 Java util class 频道,而不是一般的 w.r.t 到 java.nio。