通道 | Java NIO

栏目: Java · 发布时间: 5年前

内容简介:Java NIO 通道类似于流,但有一些差异:如上所述,你从通道将数据读入缓冲区,从缓冲区将数据写入通道。以下是示意图:以下是 Java NIO 中非常重要的通道实现:

Java NIO 通道类似于流,但有一些差异:

  • 你可以对通道读写。流通常是单向(读或写)

  • 异步读写通道

  • 通道通常往缓冲区读,或从缓冲区写

如上所述,你从通道将数据读入缓冲区,从缓冲区将数据写入通道。以下是示意图:

通道 | Java NIO

通道实现

以下是 Java NIO 中非常重要的通道实现:

  • FileChannel
  • DatagramChannel
  • SocketChannel
  • ServerSocketChannel

FileChannel 从文件读或往文件写数据。

DatagramChannel 可以通过 UDP 在网络上读写数据。

SocketChannel 可以通过 TCP 在网络上读写数据。

ServerSocketChannel 允许你监听接入的 TCP 连接,像 web 服务器一样。每接入一个连接就创建一个 ServerSocketChannel

通道基础示例

以下是使用 FileChannel 把一些数据读入缓冲区的基础示例:

RandomAccessFile aFile = new RandomAccessFile("data/nio-data.txt", "rw");
FileChannel inChannel = aFile.getChannel();

ByteBuffer buffer = ByteBuffer.allocate(48);

int bytesRead = inChannel.read(buffer);
while (bytesRead != -1) {

    log.info("Read -> {}", bytesRead);

    buffer.flip();

    while (buffer.hasRemaining()) {
        log.info("Read -> {}", buffer.get());
    }

    buffer.clear();

    bytesRead = inChannel.read(buffer);
}

aFile.close();
复制代码

注意调用 buf.flip() 。首先将数据写入缓冲区,然后切换模式,读出数据。关于缓冲区的更多详情见下文。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

五子连珠必胜法

五子连珠必胜法

新井华石 / 张书 / 人民体育出版社 / 1997-10 / 12.00元

《五子连珠必胜法》经日本国虹有社授权,译自日本连珠社已故理事长新井华石九段经典著作《连珠必胜法》一书。内容阐述和介绍五子连珠的基本着法和各种常用的布局定式。全书分两大编。连珠基本编介绍连珠棋的发展历史、连珠棋的规则和规定以及基本珠形。连珠必胜编分为六章分别阐述和介绍各种常用布局定式,包括二号连浦月、五号连花月、一号连云月、二号桂名月、三号桂岚月、二号间恒星六种布局定式。一起来看看 《五子连珠必胜法》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具