Chinaunix首页 | 论坛 | 博客
  • 博客访问: 159515
  • 博文数量: 34
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 378
  • 用 户 组: 普通用户
  • 注册时间: 2017-01-17 11:19
个人简介

人的一生犹如负重致远,不可急躁。 以不自由为常事,则不觉不足。 心生欲望时,应回顾贫困之日。 心怀宽恕,视怒如敌,则能无视长久。 只知胜而不知敗,必害其身。 责人不如责己,不及胜于过之。

文章分类

全部博文(34)

文章存档

2018年(2)

2017年(32)

我的朋友

分类: Java

2017-03-09 15:04:24

Java NIO系列 Pipe(四)

1  Pipe

         Java NIO管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。

Pipe原理的图示:

1.1  创建Pipe

通过Pipe.open()方法打开管道。

         代码如下:

Pipe pipe = Pipe.open();

1.2  Pipe写数据

要向管道写数据,需要访问sink通道。

代码如下:

Pipe.SinkChannel sinkChannel = pipe.sink();

通过调用SinkChannelwrite()方法,将数据写入SinkChannel

         代码如下:

String wData = "write to file……";

ByteBuffer buf = ByteBuffer.allocate(1024);

buf.clear();

buf.put(wData.getBytes());

buf.flip();

while(buf.hasRemaining()) {

sinkChannel.write(buf);

}

1.3  Pipe读数据

从读取管道的数据,需要访问source通道。

代码如下:

Pipe.SourceChannel sourceChannel = pipe.source();

调用source通道的read()方法来读取数据。

         代码如下:

ByteBuffer buf = ByteBuffer.allocate(1024);

int bytesRead = sourceChannel.read(buf);

注意:read()方法返回的int值会告诉我们多少字节被读进了缓冲区。





参考链接:





阅读(1675) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~