JAVA-4 NIOのChanel間のデータ伝送方法


Java NIOでは、二つのチャンネルの中にFileChanelがあると、直接に一つのチャンネルから別のチャンネルにデータを送ることができます。
transfer From():受動受信
FileChanelのtransfer From方法は、ソースチャネルからFileChanelにデータを転送することができます。
メソッドの入力パラメータpositionは、positionからターゲットファイルへのデータの書き込みを開始し、countは最大送信のバイト数を表します。ソースチャネルの残りの空間がcountバイトより小さい場合、送信されるバイト数は要求されたバイト数よりも小さい。
また、SoketChanelの実装では、現在準備されているデータのみがSocketChanelに伝送されます。したがって、SocketChanelは、要求されたすべてのデータをFileChanelに全部送信しないかもしれない。
トランスファーTo():自動送信
transferTo()メソッドはFileChanelから他のチャンネルにデータを転送します。以下は簡単な例です。
呼び出し方法のFileChanelオブジェクトが異なる以外は、他のものは同じです。
上記のSocketChanelに関する問題は、transferTo()の方法にも存在します。SocketChannelは目標bufferが満たされるまでデータを転送します。
例:

@Test
  public void test2() {
    RandomAccessFile fromFile = new RandomAccessFile("fromFile.txt", "rw");
    FileChannel fromChannel = fromFile.getChannel();
    RandomAccessFile toFile = new RandomAccessFile("toFile.txt", "rw");
    FileChannel toChannel = toFile.getChannel();
    long position = 0;
    long count = fromChannel.size();

    // from       ;  socketfrom          ,    count 
    toChannel.transferFrom(fromChannel,position, count);
    //        to;  sockedfrom     ,  to   
    fromChannel.transferTo(position, count, toChannel);
  }
以上のJAVA-4 NIOのChanel間のデータ伝送方法は小編集で皆さんに全部の内容を共有しました。参考にしていただければと思います。よろしくお願いします。