Java NIO (Pipe)管道
精华
小牛编辑
99浏览
2023-03-14
Java NIO Pipe是两个线程之间的单向数据连接。APipe 具有源通道和宿通道。您将数据写入接收器通道。然后可以从源通道读取此数据。
这是Pipe原理的说明:
Java NIO:管道内部 |
1 创建管道
Pipe通过调用该Pipe.open()方法来 打开一个。看起来是这样的:
Pipe pipe = Pipe.open();
2 写入管道
要写入a,Pipe您需要访问接收器通道。这是完成的方式:
Pipe.SinkChannel sinkChannel = pipe.sink();
您可以SinkChannel通过调用a的write() 方法来写入它,如下所示:
String newData = "New String to write to file..." + System.currentTimeMillis();
ByteBuffer buf = ByteBuffer.allocate(48);
buf.clear();
buf.put(newData.getBytes());
buf.flip();
while(buf.hasRemaining()) {
sinkChannel.write(buf);
}
3 从管道读取
要从中读取内容,Pipe您需要访问源通道。这是完成的方式:
Pipe.SourceChannel sourceChannel = pipe.source();
要从源通道读取内容,请按以下方式调用其read()方法:
ByteBuffer buf = ByteBuffer.allocate(48);
int bytesRead = inChannel.read(buf);
该方法int返回的值read()告诉已将多少字节读入缓冲区。