首页 > 解决方案 > 没有 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(...)

标签: javanio

解决方案


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

除了互操作性的原因之外,如果直接使用 java.nio apis,特别是 jdk 7 或更高版本,则不是必需的。

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

所以这里的引用可能是参考 Java util 类 Channels,而不是一般的 java.nio。


推荐阅读