天天看點

NIO邊看邊記 之 管道Pipe(十一)

NIO支援管道操作。管道模型如下所示:

NIO邊看邊記 之 管道Pipe(十一)

管道通常用來兩個線程來傳輸資料。

其中SinkChannel用于往Pipe中寫資料,SourceChannel用于從Pipe中讀資料。

1.建立管道

Pipe pipe = Pipe.open();
           

2.寫管道

Pipe.SinkChannel sinkChannel = pipe.sink();
String newData = "New String to write to file..." + System.currentTimeMillis();
ByteBuffer buf = ByteBuffer.allocate();
buf.clear();
buf.put(newData.getBytes());
buf.flip();
while(buf.hasRemaining()) {
    sinkChannel.write(buf);
}
           

3.讀管道

Pipe.SourceChannel sourceChannel = pipe.source();
ByteBuffer buf = ByteBuffer.allocate();
int bytesRead = sourceChannel.read(buf);
           

read的傳回值表示讀到的位元組數。