Java NIO(十三) Pipe(管道)

Java NIO Pipe是两个线程之间的单向数据连接。 一个管道有一个源通道和一个接收通道。 您将数据写入接收器通道。 然后可以从源通道读取这些数据。

这是一个管道原理的例子:
img_8b92b3a65c73e778b1db7723b8191e16.png
image.png

Creating a Pipe管道

通过调用Pipe.open()方法打开Pipe。 这是如何看起来如此:

Pipe pipe = Pipe.open();

Writing to a Pipe

要写入管道,您需要访问接收器通道。 这是如何做到的:

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

Reading from a Pipe

要从管道中读取,您需要访问源通道。 这是如何做到的:

Pipe.SourceChannel sourceChannel = pipe.source();

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

ByteBuffer buf = ByteBuffer.allocate(48);

int bytesRead = inChannel.read(buf);

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值