3

Java の FileChannel は、ReadableByteChannel と WritableByteChannel の両方を実装しているため、双方向になります。

質問:

FileChannel を作成するには、FileInputStream (読み取り用) と FileOutputStream (書き込み用) が必要です。両方のストリームをインスタンス化する必要があるため、双方向にするという目的に反していませんか?

フォローアップの質問:

多くの場所で、java.io はストリーム指向であり、java.nio はブロック指向であると述べている参照を見てきました (ここ)。では、なぜ InputStream と OutputStream を介してインスタンス化されるのでしょうか? ブロック指向の概念は、ストリームの単なる抽象化ですか?

4

1 に答える 1

5

FileChannel を作成するには、FileInputStream (読み取り用) と FileOutputStream (書き込み用) が必要です。

あなたはそうしない。使用できますFileChannel.open(Path, OpenOption...)

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

フォローアップの質問に対する回答については、こちらをご覧ください。

于 2013-09-09T20:50:56.757 に答える