Java NIO系列教程(十一) Pipe

原创 2016年06月02日 11:21:25

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

这里是Pipe原理的图示:

创建管道

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

1 Pipe pipe = Pipe.open();

向管道写数据

要向管道写数据,需要访问sink通道。像这样:

1 Pipe.SinkChannel sinkChannel = pipe.sink();

通过调用SinkChannel的write()方法,将数据写入SinkChannel,像这样:

01 String newData = "New String to write to file..." + System.currentTimeMillis();
02 ByteBuffer buf = ByteBuffer.allocate(48);
03 buf.clear();
04 buf.put(newData.getBytes());
05  
06 buf.flip();
07  
08 while(buf.hasRemaining()) {
09     sinkChannel.write(buf);
10 }

从管道读取数据

从读取管道的数据,需要访问source通道,像这样:

1 Pipe.SourceChannel sourceChannel = pipe.source();

调用source通道的read()方法来读取数据,像这样:

1 ByteBuffer buf = ByteBuffer.allocate(48);
2  
3 int bytesRead = sourceChannel.read(buf);

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java NIO系列教程(十二) Java NIO与IO

原文地址:http://tutorials.jenkov.com/java-nio/nio-vs-io.html 作者:Jakob Jenkov   译者:郭蕾    校对:方腾飞 当学习了J...
  • fw0124
  • fw0124
  • 2015年03月17日 15:22
  • 1787

Java NIO 系列教程

Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。Java NIO提供了与标准IO不同的IO工作方式: Channels ...
  • tzs_1041218129
  • tzs_1041218129
  • 2017年02月07日 23:08
  • 2363

Java NIO 系列教程

Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。本系列教程将有助于你学习和理解Java NIO。感谢并发编程网的翻译和投递...
  • qq_24084925
  • qq_24084925
  • 2016年10月20日 11:01
  • 2201

Java NIO系列教程

  • 2017年11月19日 13:27
  • 177KB
  • 下载

Java NIO系列教程(五) FileChannel

Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 打开FileCh...
  • z742182637
  • z742182637
  • 2017年03月27日 09:39
  • 204

Java NIO系列教程(三) Buffer

Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NI...
  • kobejayandy
  • kobejayandy
  • 2013年09月10日 23:35
  • 6072

Java NIO系列教程(三) Buffer

Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成...
  • dyf20081124
  • dyf20081124
  • 2014年04月18日 17:41
  • 195

Java NIO系列教程(二) Buffer

Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成...
  • z742182637
  • z742182637
  • 2017年03月24日 10:30
  • 129

Java NIO系列教程(三) Buffer

Java NIO系列教程(三) Buffer 原文链接     作者:Jakob Jenkov     译者:airu     校对:丁一 Java NIO中的Buffer用于和NIO...
  • DavyJonesWang
  • DavyJonesWang
  • 2014年04月28日 01:13
  • 497

Java NIO系列教程(六) Selector

原文链接 作者:Jakob Jenkov 译者:浪迹v 校对:丁一 Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样...
  • doctor_who2004
  • doctor_who2004
  • 2014年10月12日 15:44
  • 514
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java NIO系列教程(十一) Pipe
举报原因:
原因补充:

(最多只允许输入30个字)