Buffer和Channel是NIO中的基本對象,凡是涉及到I/O的操做都都會用到Buffer和Channel. java
Channel就像IO中的Stream全部的字節從這裏寫到Buffer中或者從Buffer中讀到Channel中。 數組
Buffer是NIO的容器,是NIO和IO的重要區別之一,在NIO中全部的數據在Buffer中處理,而在IO中則是在Stream中來處理.Buffer是本質上是數組,可是不必定是字節數組,也多是其它類型數組。Buffer不限於數組,更重要的是它提供了一種數據存儲結構而且保持了系統讀寫處理的記錄。 app
查看JAVA API,Buffer的種類主要有。 this
ByteBuffer,MappedByteBuffer, CharBuffer, DoubleBuffer,FloatBuffer, IntBuffer, LongBuffer, ShortBuffer.能夠看出就是java中基本類對應的一些Buffer類。每個類中都定義了對應的基本類數組私有變量hb. spa
Channel 是雙向的,而在IO中Stream倒是單向的,雙向的Channel和操做系統的Stream是對應的,操做系統級別的stream就是雙向的。 操作系統
具體的示例程序網上不少就不寫了,有幾個地方須要注意的,在這裏說一下。 orm
Buffer.clear Clears this buffer. The position is set to zero, the limit is set to the capacity, and the mark is discarded.在向buffer中寫入前注意清空Buffer,不然會產生無效數據。 對象
Buffer.flip Flips this buffer. The limit is set to the current position and then the position is set to zero. If the mark is defined then it is discarded. ip
另外注意Channel和Stream在打開以後不要忘了關閉,最好是放在finally語句中將它們close ci