3.1.1 打開(kāi)通道 通道是訪問(wèn) I/O 服務(wù)的導(dǎo)管。正如我們?cè)诘谝徽轮兴懻摰模琁/O 可以分為廣義的兩大類(lèi)別:
File I/O 和 Stream I/O。那么相應(yīng)地有兩種類(lèi)型的通道也就不足為怪了,它們是文件(file)通道和套接字(socket)通道。如果您參考一下圖 3-2,您就會(huì)發(fā)現(xiàn)有一個(gè)FileChannel 類(lèi)和三個(gè)socket通道類(lèi):SocketChannel 、ServerSocketChannel 和 DatagramChannel 。 通道可以以多種方式創(chuàng)建。Socket通道有可以直接創(chuàng)建新socket通道的工廠方法。但是一個(gè)FileChannel 對(duì)象卻只能通過(guò)在一個(gè)打開(kāi)的RandomAccessFile 、FileInputStream 或 FileOutputStream 對(duì)象上調(diào)用getChannel() 方法來(lái)獲取。您不能直接創(chuàng)建一個(gè)FileChannel 對(duì)象。File 和 socket 通道會(huì)在后面的章節(jié)中予以詳細(xì)討論。 - 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();
在 3.5 節(jié)中您會(huì)發(fā)現(xiàn),java.net 的socket類(lèi)也有新的getChannel() 方法。這些方法雖然能返回一個(gè)相應(yīng)的socket通道對(duì)象,但它們卻并非新通道的來(lái)源,RandomAccessFile.getChannel() 方法才是。只有在已經(jīng)有通道存在的時(shí)候,它們才返回與一個(gè) socket 關(guān)聯(lián)的通道;它們永遠(yuǎn)不會(huì)創(chuàng)建新通道。 Java nio入門(mén)教程詳解(十五)
0
0
我們認(rèn)為:用戶的主要目的,是為了獲取有用的信息,而不是來(lái)點(diǎn)擊廣告的。因此本站將竭力做好內(nèi)容,并將廣告和內(nèi)容進(jìn)行分離,確保所有廣告不會(huì)影響到用戶的正常閱讀體驗(yàn)。用戶僅憑個(gè)人意愿和興趣愛(ài)好點(diǎn)擊廣告。
我們堅(jiān)信:只有給用戶帶來(lái)價(jià)值,用戶才會(huì)給我們以回報(bào)。
|