一、前言

  前面學習了緩沖區(qū)的相關(guān)知識點,接下來學習通道。

二、通道

  2.1 層次結(jié)構(gòu)圖

  對于通道的類層次結(jié)構(gòu)如下圖所示。

  iOS培訓,Swift培訓,蘋果開發(fā)培訓,移動開發(fā)培訓

  其中,Channel是所有類的父類,其定義了通道的基本操作。從 Channel 接口引申出的其他接口都是面向字節(jié)的子接口,包括 WritableByteChannel和ReadableByteChannel。這也意味著通道只能在字節(jié)緩沖區(qū)上操作。

  2.2 通道基礎(chǔ)

  Channel接口類只定義了兩個方法(isOpen和close),分別表示通道是否打開和關(guān)閉通道,具體細節(jié)需要子類實現(xiàn)?!  ?/p>

  IO操作可分為File IO和Stream IO,對應通道也有它們是文件( file)通道和套接字( socket)通道 。通道可以有多種方式創(chuàng)建。Socket 通道有可以直接創(chuàng)建新 socket 通道的工廠方法。但File通道不能直接創(chuàng)建,只能通過在一個打開的RandomAccessFile、FileInputStream或FileOutputStream的對象上調(diào)用getChannel( )方法來獲取。

  通道將數(shù)據(jù)傳輸給 ByteBuffer 對象或者從 ByteBuffer 對象獲取數(shù)據(jù)進行傳輸,通道可以是單向( unidirectional)或者雙向的( bidirectional)。一個 channel 類可能實現(xiàn)定義read( )方法的 ReadableByteChannel 接口,而另一個 channel 類也許實現(xiàn) WritableByteChannel 接口以提供 write( )方法。實現(xiàn)這兩種接口其中之一的類都是單向的,只能在一個方向上傳輸數(shù)據(jù)。如果一個類同時實現(xiàn)這兩個接口,那么它是雙向的,可以雙向傳輸數(shù)據(jù)。如ByteChannel 接口,該接口繼承 ReadableByteChannel 和WritableByteChannel 兩個接口,可雙向傳輸數(shù)據(jù)。

  值得注意的是,從 

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設(shè)計培訓,網(wǎng)站建設(shè)培訓學習是年輕人改變自己的最好方式