java NIO(一)Channel
nio
中的channel
與流的區(qū)別在于,流的讀寫通常是單向的,而通道可以異步的讀寫,也就是說這個channel
可以讀數(shù)據(jù)到緩沖區(qū),緩沖區(qū)也可以寫數(shù)據(jù)到channel
Channel的實現(xiàn)
Java NIO
中最重要的通道實現(xiàn)有以下幾種
FileChannel
DatagramChannel
SocketChannel
ServerSocketChannel
FileChannel
從文件中讀寫數(shù)據(jù)
DatagramChannel
可以通過UDP讀寫網(wǎng)絡(luò)中的數(shù)據(jù)
SocketChannel
能通過TCP讀寫網(wǎng)絡(luò)中的數(shù)據(jù)
ServerSocketChannel
可以監(jiān)聽新進來的TCP連接,每一個新進來的連接都會創(chuàng)建一個SocketChannel
下面是一個例子
try {
RandomAccessFile aFile = new RandomAccessFile(
"Config.xml","rw");
FileChannel inChannel = aFile.getChannel();
ByteBuffer buffer = ByteBuffer.allocate(48);
int byteRead = inChannel.read(buffer);
while (byteRead != -1){
System.out.println("Read "+byteRead);
buffer.flip();
while (buffer.hasRemaining())
System.out.print((char) buffer.get());
buffer.clear();
byteRead = inChannel.read(buffer);
}
aFile.close();
} catch (IOException ex) {
ex.printStackTrace();
}