为什么从InputStream / OutputStream创建NIO FileChannel

时间:2013-09-09 20:46:57

标签: java io nio

Java中的FileChannel实现了ReadableByteChannel和WritableByteChannel,这使它们成为双向的。

问题

要创建FileChannel,我需要FileInputStream(用于读取)和FileOutputStream(用于写入)。不是因为我需要实例化这两个流而无法使它们成为双向的目的吗?

跟进问题:

我在许多地方看到过引用,声明java.io是面向流的,而java.nio是面向块的(Here)。那他们为什么要通过InputStream和OutputStream进行实例化呢?块面向概念,只是Streams的抽象吗?

1 个答案:

答案 0 :(得分:5)

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

你没有。您可以使用FileChannel.open(Path, OpenOption...)

Path path = ...;
FileChannel channel = FileChannel.open(path, options)
channel.read(byteBuffer);
channel.write(byteBuffer);

请查看here以获得有关后续问题的答案。