您现在的位置是:主页 > news > 珠海制作网站/整站优化关键词排名
珠海制作网站/整站优化关键词排名
admin2025/6/9 22:19:05【news】
简介珠海制作网站,整站优化关键词排名,php动态网站开发概念,广州专业的做网站公司Java NIO 通道1 Channel的介绍Java NIO的通道类似于流,但有一些区别:您可以读取和写入通道。流通常是单向的(读或写)。通道可以异步读写。通道始终读取或写入缓冲区。如上所述,您将数据从通道读取到缓冲区中,然后将数据从缓冲区写…
Java NIO 通道
1 Channel的介绍
Java NIO的通道类似于流,但有一些区别:
您可以读取和写入通道。流通常是单向的(读或写)。
通道可以异步读写。
通道始终读取或写入缓冲区。
如上所述,您将数据从通道读取到缓冲区中,然后将数据从缓冲区写入通道中。如下图:
Java NIO:通道将数据读取到缓冲区中,而缓冲区将数据写入通道中
2 Channel的实现
以下是Java NIO中最重要的Channel实现:
FileChannel
DatagramChannel
SocketChannel
ServerSocketChannel
FileChannel:读取数据到文件中。
DatagramChannel:可以读取并在通过UDP网络写入数据。
SocketChannel:可以读取和通过TCP网络写入数据。
ServerSocketChannel:让您监听进入的TCP连接,例如Web服务器一样。为每个传入连接SocketChannel创建一个。
3 Channel的案例
该示例使用FileChannel读取一些数据到Buffer:
/**
* 一点教程网: http://www.yiidian.com
*/
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);
}
aFile.close();