内容简介: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() 。首先将数据写入缓冲区,然后切换模式,读出数据。关于缓冲区的更多详情见下文。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Golang 并发,有缓存通道,通道同步案例演示
- 科普 | 菜鸟学习状态通道,Part-2:App 定制型状态通道
- golang通道定义
- Go 通道
- golang 通道channel 基础
- golang通道channel高级
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据驱动:从方法到实践
桑文锋 / 电子工业出版社 / 2018-3 / 49
本书是从理论到实践的全面且细致的企业数据驱动指南,从作者的百度大数据工作说起,完整还原其从零到一构建百度用户行为大数据处理平台经历。详解大数据本质、理念与现状,围绕数据驱动四环节——采集、建模、分析、指标,深入浅出地讲述企业如何将数据驱动方案落地,并指出数据驱动的价值在于“数据驱动决策”、“数据驱动产品智能”。最后通过互联网金融、电子商务、企业服务、零售四大行业实践,从需求梳理、事件指标设计、数据......一起来看看 《数据驱动:从方法到实践》 这本书的介绍吧!