所謂的nio,是new io的縮寫,它提供了buffer的功能來提交io的效能。jdk從1.4之後開始提供相關操作。
基本結構:buffer抽象類的一系列子類實現,其中booleanbuffer不存在,也沒必要緩衝。具體如下:bytebuffer,
byteorder,
charbuffer,
doublebuffer,
floatbuffer,
intbuffer
longbuffer
shortbuffer
同時針對各中資料結構,提供了通道(channel)的概念,可以針對該資料結構進行雙向操作。
bytebuffer bytebuffer = bytebuffer.allocate(1024
); bytebuffer.put("hello wolrd"
.getbytes());
system.out.println(bytebuffer.position());
system.out.println(bytebuffer.capacity());
system.out.println(bytebuffer.limit());
例2:檔案內容拷貝
string infile ="c:\\from.txt"
;
string outfile = "c:\\to.txt"
;
// 獲取原始檔和目標檔案的輸入輸出流
fileinputstream fin = new
fileinputstream(infile);
fileoutputstream fout = new
fileoutputstream(outfile);
// 獲取輸入輸出通道
filechannel fcin = fin.getchannel();
filechannel fcout = fout.getchannel();
// 建立緩衝區
bytebuffer buffer = bytebuffer.allocate(1024
);
while
(true
)
// flip方法讓緩衝區可以將新讀入的資料寫入另乙個通道
buffer.flip();
// 從輸出通道中將資料寫入緩衝區
fcout.write(buffer);
}
更多例子,參考:
學習NIO小結
nio 同步非阻塞 在jdk1.4時推出,和傳統的io 同步阻塞 比較有著新的思想,在網上學習和整理知識點時知道學習nio可分為3個部分 1.channel 通道,資料的讀取和寫入都可以通過它來完成。2.selector 選擇器,用於選擇註冊在通道中的已發生的事件。3.bytebuffer 乙個新的...
Nio基本使用
io分為兩類,一類是檔案io,另一類就是網路io。jdk1.4新增了了nio,以往的io讀寫都是阻塞式的,如果io流中沒有可讀寫的資料時,那麼程式就會阻塞,知道有資料可以讀寫,效率低下。nio就是為了改善這種情況推出的。nio有兩個關鍵物件,乙個是channel,另乙個是buffer,channel...
nio基本使用
nio速度的提高來自於所使用的結構更接近於作業系統執行i o的方式 通道和緩衝器。我們可以把它想象成乙個煤礦,通道是乙個包含煤層 資料 的礦藏,而緩衝器則是派送到礦藏的卡車。卡車載滿煤炭而歸,我們再從卡車上獲得煤炭。也就是說,我們並沒有直接和通道互動,我們只是和緩衝器互動,並且把緩衝器派送到通道。通...