Java NIO管道是兩個線程之間的單向數據鏈接。Pipe
具備源信道和接受通道。您將數據寫入sink通道。而後能夠從源通道讀取該數據。spa
這是一個原理的Pipe流程圖
:線程
Java NIO:Pipe Internals |
建立管道
你打開一個Pipe
經過調用該Pipe.open()
方法。code
代碼:blog
Pipe pipe = Pipe.open();
向管寫入信息
要寫入Pipe
你須要訪問接收器通道。ip
代碼:字符串
Pipe.SinkChannel sinkChannel = pipe.sink();
經過SinkChannel調用write()
方法來寫,get
代碼:it
String newData =「要寫入文件的新字符串...」+ System.currentTimeMillis(); ByteBuffer buf = ByteBuffer.allocate(48); buf.clear(); buf.put(newData.getBytes()); buf.flip(); while(buf.hasRemaining()){ sinkChannel.write(BUF); }
從管道讀取數據
要從中讀取,Pipe
您須要訪問源通道。pip
代碼:table
Pipe.SourceChannel sourceChannel = pipe.source();
要從源通道讀取,調用read()
方法:
ByteBuffer buf = ByteBuffer.allocate(48); int bytesRead = inChannel.read(buf);
read()
方法返回的int值,代表向緩衝區中讀取多少個字節。