您现在的位置是:主页 > news > 珠海制作网站/整站优化关键词排名

珠海制作网站/整站优化关键词排名

admin2025/6/9 22:19:05news

简介珠海制作网站,整站优化关键词排名,php动态网站开发概念,广州专业的做网站公司Java NIO 通道1 Channel的介绍Java NIO的通道类似于流,但有一些区别:您可以读取和写入通道。流通常是单向的(读或写)。通道可以异步读写。通道始终读取或写入缓冲区。如上所述,您将数据从通道读取到缓冲区中,然后将数据从缓冲区写…

珠海制作网站,整站优化关键词排名,php动态网站开发概念,广州专业的做网站公司Java NIO 通道1 Channel的介绍Java NIO的通道类似于流,但有一些区别:您可以读取和写入通道。流通常是单向的(读或写)。通道可以异步读写。通道始终读取或写入缓冲区。如上所述,您将数据从通道读取到缓冲区中,然后将数据从缓冲区写…

Java NIO 通道

1 Channel的介绍

Java NIO的通道类似于流,但有一些区别:

您可以读取和写入通道。流通常是单向的(读或写)。

通道可以异步读写。

通道始终读取或写入缓冲区。

如上所述,您将数据从通道读取到缓冲区中,然后将数据从缓冲区写入通道中。如下图:

3b775f5e4cb5023d57c8779d86506d13.png

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();