作者微信 bishe2022

代码功能演示视频在页面下方,请先观看;如需定制开发,联系页面右侧客服
Java NIO系列教程(十一) Pipe

Custom Tab

这里是Pipe原理的图示:

blob.png

创建管道

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

1Pipe pipe = Pipe.open();

向管道写数据

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

1Pipe.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通道,像这样:

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

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

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

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

   转载自:http://ifeve.com/pipe/

Java NIO系列教程(一) Java NIO 概述

http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=508

Java NIO系列教程(二) Channel

http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=509

Java NIO系列教程(三) Buffer

http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=510

Java NIO系列教程(四) Scatter/Gather

http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=511

Java NIO系列教程(五) 通道之间的数据传输

http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=512

Java NIO系列教程(六) Selector

http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=513

Java NIO系列教程(七) FileChannel

http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=514

Java NIO系列教程(八) SocketChannel

http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=516

Java NIO系列教程(九) ServerSocketChannel

http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=517

Java NIO系列教程(十) Java NIO DatagramChannel

http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=518

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

http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=519



Home