これは、コアが3つの主要コンポーネント、チャンネル(管)、バッファ(バッファ)を有し、また、IOの4つの基本型に対応する非ブロッキングIO、IOマルチプレクサとして知らOIO、反対側に、新しい新しいJava NIO IOを指しセレクタ(セレクタ)
読み取りと書き込みの両方の、入力および出力ストリームの伝統的なコレクションにIOチャネルの同等を参照してください、4つのカテゴリがあります、
FileChannel書き込みデータ、ファイルのファイルパス
データ用のSocketChannelチャンネルソケットは、TCP接続ソケットソケットを読みます
リスニングTCP接続要求を許可するのServerSocketChannel、サーバソケットチャネル、セキュリティで保護されたチャネルのソケットのSocketChannelを作成するには、それぞれの要求に耳を傾けます
DatagramChanne・データグラム・チャネル(UDPプロトコルは、データを読み取ります)
1.fileChannel練習
パッケージcom.example.demo。 インポートのjava.io.File; 輸入java.io.FileInputStream; 輸入java.io.FileOutputStreamは、 インポートたjava.nio.ByteBuffer; 輸入java.nio.channels.FileChannelの。 / ** * 2019年9月22日に管理者が作成しました。 * / パブリック クラスNioChannelTest { 公共 静的 ボイドメイン(文字列[]引数){ fileChannelCopyFile()。 } パブリック 静的 ボイドfileChannelCopyFile(){ ファイルSRCFILE = 新しいファイル( "srcFile.txt")。 destFileファイル = 新しいファイル( "destFile.txt" ); してみてください{ 場合(!destFile.exists())destFile.createNewFile(); } キャッチ(例外e){} のFileInputStream FIS = NULL ; FileOutputStream fosの = nullを。 FileChannel inChannel = nullを。 FileChannel outChannel = nullを。 試す{ FIS = 新しいFileInputStreamを(SRCFILE)。 FOS = 新しいですたFileOutputStream(destFile)。
//通道的获取 inChannel = fis.getChannel()。 outChannel = fos.getChannel()。 int型の長さ= -1 。 ByteBufferのBUF = ByteBuffer.allocate(1024 )。 一方、((長さ= inChannel.read(BUF))= - 1] ){ buf.flip()。 int型 outlength = 0 ; // 将BUF写入到输出通道 しばらく((outlength = outChannel.write(BUF))!= 0 ){ System.out.printlnは( "書いたことのバイトLEN" + outChannel)。 } //書き込みモードへの切り替え、空のbuf buf.clear(); } // ディスクに必須フラッシュ outChannel.force(真の); } キャッチ(例外E){} 最後に{ 試み{通路閉鎖// )(outChannel.closeを; fos.close(); inChannel.close(); fis.close(); } キャッチ(例外e){} } } }
输出:== 29を書いたことのバイトLEN
結果