当前位置: 首页 > 教程 > Java NIO >

Java NIO (Pipe)管道

精华
小牛编辑
102浏览
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()告诉已将多少字节读入缓冲区。