java - 没有 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 apis,特别是 jdk 7 或更高版本,则不是必需的。
更多信息: https ://docs.oracle.com/javase/7/docs/api/java/nio/channels/Channels.html
所以这里的引用可能是参考 Java util 类 Channels,而不是一般的 java.nio。
推荐阅读
- c# - 如何在 MVVM AvalonDock 程序中使用 ApplicationCommands?
- wireshark - 如何使用 Wireshark 在 SSH 远程服务器中本地捕获 MQTT 数据?
- python - optuna.integration.lightGBM 自定义优化指标
- wordpress - WooCommerce 当前类别隐藏
- python - 为什么 flake8 在 Python 3 中使用 match.group(0) 时会给出警告 F821 -- undefined name 'match'
- google-app-engine - 无法使用 Flask 和 SQL Alchemy 连接 Google App Engine 和 Cloud SQL
- nginx - 将所有请求返回到 Nginx 中的索引?
- c# - 移动统一 2d 时玩家口吃
- docker - eclipse che docker 桌面安装无法从私有 docker 注册表中提取图像
- electron - 有没有办法将电子应用程序注册到 Windows 路径中?