ホームページ  >  記事  >  Java  >  Java NIO シリーズ チュートリアル 2: Java NIO チャネルはストリームに似ています

Java NIO シリーズ チュートリアル 2: Java NIO チャネルはストリームに似ています

php是最好的语言
php是最好的语言オリジナル
2018-07-30 10:39:531728ブラウズ

Java NIO のチャネルはストリームに似ていますが、いくつかの違いがあります:

  • チャネルからデータを読み取ることも、チャネルにデータを書き込むこともできます。ただし、ストリームの読み取りと書き込みは通常一方向です。

  • チャネルは非同期で読み書きできます。

  • チャネル内のデータは、常に最初にバッファから読み取られるか、常にバッファから書き込まれる必要があります。

上で述べたように、データはチャネルからバッファに読み取られ、データはバッファからチャネルに書き込まれます。以下の図に示すように:

チャネルの実装

これらは、Java NIO の最も重要なチャネルの実装です:

  • FileChannel

  • DatagramChannel

  • SocketChannel

  • サーバーソケットチャンネル

FileChannel は、ファイルからデータを読み書きします。

DatagramChannel は、UDP を介してネットワーク内のデータを読み書きできます。

SocketChannel は、TCP 経由でネットワーク内のデータを読み書きできます。

ServerSocketChannel は、Web サーバーと同様に、新しい受信 TCP 接続を監視できます。 SocketChannel は、新しい受信接続ごとに作成されます。

基本的なチャネルの例

以下は、FileChannel を使用してデータをバッファに読み取る例です:

RandomAccessFile aFile = new RandomAccessFile("data/nio-data.txt", "rw");
FileChannel inChannel = aFile.getChannel();

ByteBuffer buf = ByteBuffer.allocate(48);

int bytesRead = inChannel.read(buf);
while (bytesRead != -1) {

System.out.println("Read " + bytesRead);
buf.flip();

while(buf.hasRemaining()){
System.out.print((char) buf.get());
}

buf.clear();
bytesRead = inChannel.read(buf);
}
aFile.close();

buf.flip() の呼び出しに注意し、最初にデータをバッファに読み取り、次にバッファを反転します。次にバッファからデータを読み取ります。次のセクションでは、バッファについて詳しく説明します。

関連記事:

Java NIO チュートリアル シリーズ 1: Java NIO の簡単な紹介

Java NIO チュートリアル シリーズ 3: Buffer の基本的な使い方

関連動画:

JDK ダウンロード プロセスの図 - JAVA初歩的な入門ビデオチュートリアル

以上がJava NIO シリーズ チュートリアル 2: Java NIO チャネルはストリームに似ていますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。