チャンネルNIOのコンポーネント

これは、コアが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

結果

 

おすすめ

転載: www.cnblogs.com/pu20065226/p/11569798.html