NIO邊看邊記 之 通道之間的資料傳輸(五)

2021-07-11 14:38:37 字數 1271 閱讀 1804

兩個通道之間可以相互傳輸資料,但是至少乙個通道得是檔案channel

從乙個channel中傳輸到另乙個channel,目的channel作為呼叫方

例項**如下:

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();

//從position開始最多傳輸count個位元組

tochannel.transferfrom(position, count, fromchannel);

如果源通道中待傳輸的資料少於count個,則有多少資料傳輸多少資料,但是最多傳輸傳輸count個。當源通道是socketchannel時只會將準備好的資料傳輸到filechannel中。

從乙個channel中傳輸到另乙個channel,源channel作為呼叫方

例項**如下:

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();

//從position開始最多傳輸count個位元組

fromchannel.transfer (position, count, tochannel);

socketchannel會一直傳輸資料直到目標buffer被填滿。

NIO邊看邊記 之 channel(二)

通道channel就像流。通道中的資料總是先讀到到buffer中 對於buffer來說是乙個寫操作 再從buffer中寫到另乙個通道總 相對於buffer來說是乙個讀操作 channel主要分為兩類 檔案channel和網路channel,細分為4種。filechanel 從普通檔案中讀寫資料 da...

NIO邊看邊記 之 管道Pipe(十一)

nio支援管道操作。管道模型如下所示 管道通常用來兩個執行緒來傳輸資料。其中sinkchannel用於往pipe中寫資料,sourcechannel用於從pipe中讀資料。1.建立管道 pipe pipe pipe.open 2.寫管道 pipe.sinkchannel sinkchannel pi...

java之NIO通道Channel的使用

1.利用通道完成檔案的複製 非直接緩衝區 test public void test1 catch filenotfoundexception e catch ioexception e finally catch ioexception e if inchannel null catch ioex...