Java NIO-2.Channel

Java NIO 的Channels和流(stream)很像,但是有如下區(qū)別:

  • Channels既能讀又能寫,Stream只能讀或者寫
  • Channels能異步讀寫
  • Channels只能讀到Buffer中,或者從Buffer寫入

Channel實(shí)例

以下是Java NIO中重要的的Channel實(shí)例:

  • FileChannel:從/往文件中讀/寫
  • DatagramChannel:通過(guò)UDP讀寫網(wǎng)絡(luò)數(shù)據(jù)
  • SocketChannel:通過(guò)TCP讀寫網(wǎng)絡(luò)數(shù)據(jù)
  • ServerSocketChannel:監(jiān)聽接入的TCP連接,就像web服務(wù)器那樣。對(duì)于每個(gè)接入進(jìn)來(lái)的TCP連接都創(chuàng)建一個(gè)SocketChannel

基礎(chǔ)Channel例子

以下是一個(gè)例子,通過(guò)FileChannel往Buffer中讀一些數(shù)據(jù):

RandomAccessFile aFile = new RandomAccessFile("./data/nio-data.txt", "rw");
FileChannel inChannel = aFile.getChannel();
ByteBuffer buf = ByteBuffer.allocate(48);
int bytesRead = inChannel.read(buf);
while(bytesRead != -1){
    System.out.println("Read " + bytesRead);
    buf.flip();
    while(buf.hasRemaining()){
        System.out.print((char) buf.get());
    }
buf.clear();
bytesRead = inChannel.read(buf);

文件nio-data.txt:

1234567890
1234567890
1234567890
1234567890
1234567890
1234567890

輸出結(jié)果為:

Read 48
1234567890
1234567890
1234567890
1234567890
1234Read 17
567890
1234567890
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Java NIO(New IO)是從Java 1.4版本開始引入的一個(gè)新的IO API,可以替代標(biāo)準(zhǔn)的Java I...
    zhisheng_blog閱讀 1,132評(píng)論 0 7
  • Java NIO(New IO)是從Java 1.4版本開始引入的一個(gè)新的IO API,可以替代標(biāo)準(zhǔn)的Java I...
    JackChen1024閱讀 7,582評(píng)論 1 143
  • 前言: 之前的文章《Java文件IO常用歸納》主要寫了Java 標(biāo)準(zhǔn)IO要注意的細(xì)節(jié)和技巧,由于網(wǎng)上各種學(xué)習(xí)途徑,...
    androidjp閱讀 2,921評(píng)論 0 22
  • (轉(zhuǎn)載說(shuō)明:本文非原創(chuàng),轉(zhuǎn)載自http://ifeve.com/java-nio-all/) Java NIO: ...
    數(shù)獨(dú)題閱讀 818評(píng)論 0 3
  • 蜂群這樣一個(gè)由幾萬(wàn)只群氓組成的昆蟲群體被昆蟲學(xué)家惠勒稱為“超級(jí)有機(jī)體”,同時(shí)惠勒還從這其中看到了“涌現(xiàn)”的特征,蜂...
    書愿閱讀 1,197評(píng)論 0 0