原文連接:http://tutorials.jenkov.com/java-nio/channels.htmlhtml
Java NIO和標準的IO流,有一些不一樣的地方:java
放一張老圖:網絡
如下是Java NIO中重要的channel實現類dom
FileChannel,讀取或寫入數據到file(文件)異步
DatagramChannel,經過網絡讀取或寫入數據,採用UDP協議spa
SocketChannel,經過網絡讀取或寫入數據,採用TCP協議code
ServerSocketChannel,容許你監聽採用TCP的鏈接htm
這裏有一個FileChannel向Buffer裏讀入數據的例子blog
1 RandomAccessFile aFile = new RandomAccessFile("data/nio-data.txt", "rw"); 2 FileChannel inChannel = aFile.getChannel(); 3 4 ByteBuffer buf = ByteBuffer.allocate(48); 5 6 int bytesRead = inChannel.read(buf); 7 while (bytesRead != -1) { 8 9 System.out.println("Read " + bytesRead); 10 buf.flip(); 11 12 while(buf.hasRemaining()){ 13 System.out.print((char) buf.get()); 14 } 15 16 buf.clear(); 17 bytesRead = inChannel.read(buf); 18 } 19 aFile.close();
注意,調用的flip()方法,當你將數據讀取到buffer中後,你須要調用flip()方法。以後你就能夠讀取出來。ip