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が満たされるまでデータを転送します。
例:
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間のデータ伝送方法は小編集で皆さんに全部の内容を共有しました。参考にしていただければと思います。よろしくお願いします。