gpt4 book ai didi

java - ReadableByteChannel 和 WritableByteChannel 是 InputStream 和 OutputStream 的替代品吗?

转载 作者:搜寻专家 更新时间:2023-11-01 03:05:28 25 4
gpt4 key购买 nike

据我所知,nio 包中的ReadableByteChannelWritableByteChannel 可以被认为是InputStream 和来自遗留 io 包的 OutputStream。事实上,它们可用于执行相同的 I/O 操作等等。

尽管如此,它们似乎仍然没有太多使用。此外,它们对流行库的支持也很差。例如,Guava团队是均匀的thinking about dropping it .

处理 I/O 的新代码是否有任何理由在 channel 方面使用流?

最佳答案

有一个不容忽视的历史背景。当 NIO 被引入时(回到 Java 1.4),很多特性都缺失了,并且在很长一段时间内都没有兑现稍后交付它们的 promise 。回想一下,在 Java 1.4 中,获取 FileChannel 的方法是首先创建一个 FileInputStreamFileOutputStreamRandomAccessFile并对其调用 getChannel。因此,如果不使用旧的 IO/流 API,就无法使用 NIO/ channel 编写代码。

第一个 Java 版本提供了一种方法 create a FileChannel without using the old APIJava 7。这也是第一个为目录扫描、更改通知和高级文件属性提供 NIO API 的版本。

因此,就这些功能而言,NIO API 可以被认为是非常新的,开发人员需要一些时间来采用它也就不足为奇了。顺便说一句,这种采用可能包括删除实用程序方法,这些方法对于新 API 来说变得不必要,就像您链接的提案一样。据我所知,这实际上意味着仅删除四个在使用最新 API 时功能微不足道的方法。

显然,当您想要使用其中一项较新的功能(如内存映射)或上面提到的 Java 7 功能时,您必须使用 NIO API。另一方面,当您想使用序列化或 Zip/GZip(解)压缩时,Java 提供的唯一 channel 支持是将您的 channel 包装成一个流……

关于java - ReadableByteChannel 和 WritableByteChannel 是 InputStream 和 OutputStream 的替代品吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24387700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com