欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java.nio.channels.Pipe使用例子,,Java.nio.cha

来源: javaer 分享于  点击 19664 次 点评:281

java.nio.channels.Pipe使用例子,,Java.nio.cha


Java.nio.channels.Pipe 提供一种机制,可以按照写入的顺序读取数据。 Pipe.SinkChannel用来向管道写入数据,而Pipe.SourceChannel用来从管道读取数据:

PipeTest.java

package cn.outofmemory.nio.channels;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.channels.Pipe;public class PipeTest {  public static void main(String[] args) throws IOException {      //初始化Pipe实例      Pipe pipe = Pipe.open();      // 获取写通道      Pipe.SinkChannel skChannel = pipe.sink();      String testData = "Test Data to Check java NIO Channels Pipe.";      ByteBuffer buffer = ByteBuffer.allocate(512);      buffer.clear();      buffer.put(testData.getBytes());      buffer.flip();       //向写通道写入数据      while(buffer.hasRemaining()) {          skChannel.write(buffer);      }      //获得读取数据通道      Pipe.SourceChannel sourceChannel = pipe.source();      buffer = ByteBuffer.allocate(512);     //将读取数据写到控制台           while(sourceChannel.read(buffer) > 0){          //flip方法将当前读取位置设置为0, limit设置为写入数据的size         buffer.flip();          while(buffer.hasRemaining()){              char ch = (char) buffer.get();              System.out.print(ch);          }          //clear方法将buffer的limit设置为其容量capacity, 将position设置为0          buffer.clear();      }  }}

输出如下:

Test Data to Check java NIO Channels Pipe.
相关栏目:

用户点评