Java 为什么从InputStream/OutputStream创建NIO文件通道

Java 为什么从InputStream/OutputStream创建NIO文件通道,java,io,nio,Java,Io,Nio,Java中的FileChannel实现了ReadableByteChannel和WritableByteChannel,这使得它们是双向的 问题: 要创建FileChannel,我需要FileInputStream(用于读取)和FileOutputStream(用于写入)。因为我需要实例化这两个流,所以这不是违背了使它们具有双向性的目的吗 后续问题: 我在很多地方都看到过引用,指出java.io是面向流的,而java.nio是面向块的()。那么为什么它们是通过InputStream和Output

Java中的FileChannel实现了ReadableByteChannel和WritableByteChannel,这使得它们是双向的

问题

要创建FileChannel,我需要FileInputStream(用于读取)和FileOutputStream(用于写入)。因为我需要实例化这两个流,所以这不是违背了使它们具有双向性的目的吗

后续问题:

我在很多地方都看到过引用,指出java.io是面向流的,而java.nio是面向块的()。那么为什么它们是通过InputStream和OutputStream实例化的呢?面向块的概念仅仅是流上的抽象吗

要创建FileChannel,我需要FileInputStream(用于读取)和FileOutputStream(用于写入)

你没有。你可以用


查看后续问题的答案。

您可以通过
InputStream
OutputStream
获得答案,一些流实现将提供专门用于面向块IO的优化通道,一些流实现只会使用在流之上构建的简单默认值。感谢您的响应。我检查了FileInputStream.java的代码,在内部,它调用FileChannel.open()来创建FileChannel。
Path path = ...;
FileChannel channel = FileChannel.open(path, options)
channel.read(byteBuffer);
channel.write(byteBuffer);