博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
13 Java NIO 管道-翻译
阅读量:6962 次
发布时间:2019-06-27

本文共 736 字,大约阅读时间需要 2 分钟。

Java NIO管道是在两个线程之间的单向数据连接。一个管道有一个Source和Sink Channel。数据可以从Source Channel中读取。

下图说明了管道的原则:

创建一个管道

可以通过Pipe.open()方法打开一个管道,如下所示:

Pipe pipe = Pipe.open();复制代码

向管道写入数据

向管道写入数据需要访问Sink Channel。如下面所示:

Pipe.SinkChannel sinkChannel = pipe.sink();复制代码

可以通过SinkChannel的write()方法,像这样:

String newData = "New String to write to file..." + System.currentTimeMillis();ByteBuffer buf = ByteBuffer.allocate(48);buf.clear();buf.put(newData.getBytes());buf.flip();while(buf.hasRemaining()) {    sinkChannel.write(buf);}复制代码

从管道中读取数据

从管道中读取数据需要访问SourceChannel,如下所示:

Pipe.SourceChannel sourceChannel = pipe.source();复制代码

从管道中读取数据可以调用它的read()方法,像这样:

ByteBuffer buf = ByteBuffer.allcate(48);int byteRead = inChannel.read(buf);复制代码

read()方法的返回值已经向buffer中写入的字节数。

转载地址:http://mtwsl.baihongyu.com/

你可能感兴趣的文章
Terraform使用案例
查看>>
Mac下brew方式安装mysql
查看>>
开源的任务队列服务HTQ
查看>>
通过微信小程序看前端
查看>>
[LeetCode] Rotate Function
查看>>
iOS - 更轻量级的 AppDelegate - 面向服务设计
查看>>
什么样的爬虫才是好爬虫:Robots协议探究
查看>>
tomcat 部署多个项目的技巧
查看>>
yii2使用多个数据库的案例
查看>>
[LintCode/LeetCode] Search Insert Position
查看>>
Node处理http跨域请求
查看>>
Gradle for Android 第五篇( 多模块构建 )
查看>>
框架 也可以这样用 easy
查看>>
LCUI 1.1.0 Beta 发布,C 的图形界面库
查看>>
Base64
查看>>
MariaDB(mysql)之半同步复制及复制过滤器的使用
查看>>
WCF Ria Service 理解制图版本【待续】
查看>>
【IOS】高仿糗事百科客户端(基本实现了除注册,评论之外的功能)
查看>>
puppet之模块详解
查看>>
shell脚本
查看>>