人的一生犹如负重致远,不可急躁。 以不自由为常事,则不觉不足。 心生欲望时,应回顾贫困之日。 心怀宽恕,视怒如敌,则能无视长久。 只知胜而不知敗,必害其身。 责人不如责己,不及胜于过之。
分类: Java
2017-03-09 15:04:24
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();
通过调用SinkChannel的write()方法,将数据写入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值会告诉我们多少字节被读进了缓冲区。
参考链接: