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告诉将多少字节读入缓冲区。