一、通道基礎
通道是訪問I/O 服務的導管。I/O 可以分爲廣義的兩大類別:File I/O 和 Stream I/O。相應地有兩種類型的通道,它們是文件(file)通道和套接字(socket)通道。
有一個FileChannel類和三個 socket通道類:SocketChannel、ServerSocketChannel和 DatagramChannel。
通道可以以多種方式創建。Socket通道有可以直接創建新socket通道的工廠方法。但是對FileChannel對象來說,卻只能通過在一個打開的RandomAccessFile、FileInputStream或 FileOutputStream對象上調用getChannel( )方法來獲取。您不能直接創建一個FileChannel對象。
SocketChannel sc = SocketChannel.open( );
sc.connect (new InetSocketAddress ("somehost", someport));
ServerSocketChannel ssc = ServerSocketChannel.open( );
ssc.socket( ).bind (new InetSocketAddress (somelocalport));
DatagramChannel dc = DatagramChannel.open( );
RandomAccessFile raf = new RandomAccessFile ("somefile", "r");
FileChannel fc = raf.getChannel( );