nio速度的提高來自於所使用的結構更接近於作業系統執行i/o的方式:通道和緩衝器。我們可以把它想象成乙個煤礦,
通道是乙個包含煤層(資料)的礦藏,而緩衝器則是派送到礦藏的卡車。卡車載滿煤炭而歸,我們再從卡車上獲得煤炭。
也就是說,我們並沒有直接和通道互動,我們只是和緩衝器互動,並且把緩衝器派送到通道。通道要麼從緩衝器獲取資料,
要麼向緩衝器傳送資料。
唯一直接與通道互動的緩衝器是bytebuffer。還有乙個方法選擇集,用於以原始的位元組形式或基本資料型別輸出或讀取資料。
但是沒有辦法輸出或讀取物件,即使是字串物件也不行。
舊i/o中的fileinputstream、fileoutputstream以及randomaccessfile被修改了,可以產生filechannel(通道)。reader和
writer這種字元模式類不能用於產生通道;但是channels類提供了實用方法,用以在通道中產生reader和writer。
例項演示上面三種基本型別的流:
public class getchannel}}
如果我們打算實用緩衝器執行進一步的read()操作,我們也必須得呼叫clear()來為每個read()做好準備:
public class channelcopy可以用特殊方法transferto()和transferfrom()將乙個通道和另乙個通道直接相連:}}
public class transferto}
Nio基本使用
io分為兩類,一類是檔案io,另一類就是網路io。jdk1.4新增了了nio,以往的io讀寫都是阻塞式的,如果io流中沒有可讀寫的資料時,那麼程式就會阻塞,知道有資料可以讀寫,效率低下。nio就是為了改善這種情況推出的。nio有兩個關鍵物件,乙個是channel,另乙個是buffer,channel...
NIO基本編寫
一 編寫server端 1 public class server implements runnable catch ioexception e 26 2728 override 29public void run 51 8 如果為可讀狀態 52if key.isreadable 55 9 寫資料...
NIO使用小結
所謂的nio,是new io的縮寫,它提供了buffer的功能來提交io的效能。jdk從1.4之後開始提供相關操作。基本結構 buffer抽象類的一系列子類實現,其中booleanbuffer不存在,也沒必要緩衝。具體如下 bytebuffer,byteorder,charbuffer,double...