通道 | Java NIO

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

内容简介: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() 。首先将数据写入缓冲区,然后切换模式,读出数据。关于缓冲区的更多详情见下文。


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

查看所有标签

猜你喜欢:

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

疯狂Java讲义

疯狂Java讲义

李刚 / 电子工业出版社 / 2008-10 / 99.00元

《疯狂Java讲义》2000年至今,Java语言一直是应用最广的开发语言,并拥有最广泛的开发人群。如今,Java已经不再简单地是一门语言,它更像一个完整的体系,一个系统的开发平台。更甚至,它被延伸成一种开源精神。 《疯狂Java讲义》深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、Java GUI编......一起来看看 《疯狂Java讲义》 这本书的介绍吧!

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

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码