Java中的FileChannel实现了ReadableByteChannel和WritableByteChannel,这使它们成为双向的。
问题:
要创建FileChannel,我需要FileInputStream(用于读取)和FileOutputStream(用于写入)。不是因为我需要实例化这两个流而无法使它们成为双向的目的吗?
跟进问题:
我在许多地方看到过引用,声明java.io是面向流的,而java.nio是面向块的(Here)。那他们为什么要通过InputStream和OutputStream进行实例化呢?块面向概念,只是Streams的抽象吗?
答案 0 :(得分:5)
要创建FileChannel,我需要FileInputStream(用于读取)和FileOutputStream(用于写入)。
你没有。您可以使用FileChannel.open(Path, OpenOption...)
Path path = ...;
FileChannel channel = FileChannel.open(path, options)
channel.read(byteBuffer);
channel.write(byteBuffer);
请查看here以获得有关后续问题的答案。