io分為兩類,一類是檔案io,另一類就是網路io。
jdk1.4新增了了nio,以往的io讀寫都是阻塞式的,如果io流中沒有可讀寫的資料時,那麼程式就會阻塞,知道有資料可以讀寫,效率低下。nio就是為了改善這種情況推出的。
nio有兩個關鍵物件,乙個是channel,另乙個是buffer,channel相較於傳統的inputstream、outputstream而言,channel提供了map()方法,該方法可以將一塊資料直接對映到記憶體中,傳統的io流如果面向是流的,那麼io是面向塊的。
在讀資料時,資料是從channel中拿到buffer中去讀取的。寫資料時,也是把資料先寫到buffer中,再寫入channel的。所以這個buffer就是乙個資料與channel的過度工具。本質上來說buffer就是乙個陣列。buffer有點像竹筒,即可以像傳統的io流一樣,一次一次的去channel取水,也允許channel直接將一塊資料直接對映到buffer中。
nio基本使用
nio速度的提高來自於所使用的結構更接近於作業系統執行i o的方式 通道和緩衝器。我們可以把它想象成乙個煤礦,通道是乙個包含煤層 資料 的礦藏,而緩衝器則是派送到礦藏的卡車。卡車載滿煤炭而歸,我們再從卡車上獲得煤炭。也就是說,我們並沒有直接和通道互動,我們只是和緩衝器互動,並且把緩衝器派送到通道。通...
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...