java.nio.channels.Pipe使用例子
2018-07-20 来源:open-open
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.
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
最新资讯
热门推荐