Java NIO(十三) Pipe(管道)

Java NIO Pipe是两个线程之间的单向数据连接。 一个管道有一个源通道和一个接收通道。 您将数据写入接收器通道。 然后可以从源通道读取这些数据。

这是一个管道原理的例子:
image.png

Creating a Pipe管道

通过调用Pipe.open()方法打开Pipe。 这是如何看起来如此:

Pipe pipe = Pipe.open();

Writing to a Pipe

要写入管道,您需要访问接收器通道。 这是如何做到的:

Pipe.SinkChannel sinkChannel = pipe.sink();

你可以通过调用write()方法来写入SinkChannel,如下所示:

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

Reading from a Pipe

要从管道中读取,您需要访问源通道。 这是如何做到的:

Pipe.SourceChannel sourceChannel = pipe.source();

要从源通道读取,请调用其read()方法,如下所示:

ByteBuffer buf = ByteBuffer.allocate(48);

int bytesRead = inChannel.read(buf);

read()方法返回的int告诉有多少字节读取到缓冲区。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java I...
    JackChen1024阅读 7,582评论 1 143
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,915评论 18 139
  • 前言: 之前的文章《Java文件IO常用归纳》主要写了Java 标准IO要注意的细节和技巧,由于网上各种学习途径,...
    androidjp阅读 2,921评论 0 22
  • 参考:http://ifeve.com/non-blocking-server/原文地址 目录 Java NIO教...
    步积阅读 4,255评论 1 13
  • 宫斗剧几乎是从小看到大,个性鲜明有印象的却不多,大概是因为那些年的宫斗剧,大多是突出一个女主,其余都是配角的缘故。...
    千琼皎皎阅读 496评论 0 4