java NIO(一)Channel
nio
中的channel
与流的区别在于,流的读写通常是单向的,而通道可以异步的读写,也就是说这个channel
可以读数据到缓冲区,缓冲区也可以写数据到channel
Channel的实现
Java NIO
中最重要的通道实现有以下几种
FileChannel
DatagramChannel
SocketChannel
ServerSocketChannel
FileChannel
从文件中读写数据
DatagramChannel
可以通过UDP读写网络中的数据
SocketChannel
能通过TCP读写网络中的数据
ServerSocketChannel
可以监听新进来的TCP连接,每一个新进来的连接都会创建一个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();
}