Java NIO管道

时间:2020-01-09 10:36:16  来源:igfitidea点击:

Java NIO Pipe是两个线程之间的单向数据连接。 "管道"具有源通道和宿通道。我们将数据写入接收器通道。然后可以从源通道读取此数据。

创建管道

我们可以通过调用Pipe.open()方法来打开Pipe。看起来是这样的:

Pipe pipe = Pipe.open();

写入管道

要写入"管道",我们需要访问接收器通道。这是完成的方式:

Pipe.SinkChannel sinkChannel = pipe.sink();

我们可以通过调用它的write()方法来写入一个SinkChannel,如下所示:

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);
}

从管道读取

要从"管道"中读取内容,我们需要访问源频道。这是如何完成的:

Pipe.SourceChannel sourceChannel = pipe.source();

要从源通道读取内容,请调用其read()方法,如下所示:

ByteBuffer buf = ByteBuffer.allocate(48);

int bytesRead = inChannel.read(buf);

read()方法返回的int告诉将多少字节读入缓冲区。