JAVA NIO—Channel
一.概述
NIO中的Channel类似标准IO中的流,不同的是Channel可同时读写,但流要么读,要么写,不能同时读写,而且Channel是非阻塞的,Channel的子类包含以下四个:
- FileChannel:文件读写数据。
- DatagramChannel:UDP网络连接读写数据。
- SocketChannel:TCP网络连接数据。
- ServerSocketChannel:TCP服务器读写数据。
二.FileChannel
FileChannel是连接到文件的通道。使用FileChannel可以从文件中读取数据或将数据写入文件。
public static void main(String[] args) throws Exception {
RandomAccessFile file = new RandomAccessFile("d:/test.txt", "rw");
FileChannel channel = file.getChannel();
String newData = "hello world nio test";
ByteBuffer buf = ByteBuffer.allocate(48);
buf.clear();
buf.put(newData.getBytes());
buf.flip();
while(buf.hasRemaining()) {
channel.write(buf);
}
}