真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java的NIO管道用法代碼分享

Java的NIO中的管道,就類似于實際中的管道,有兩端,一段作為輸入,一段作為輸出。也就是說,在創(chuàng)建了一個管道后,既可以對管道進行寫,也可以對管道進行讀,不過這兩種操作要分別在兩端進行。有點類似于隊列的方式。

發(fā)展壯大離不開廣大客戶長期以來的信賴與支持,我們將始終秉承“誠信為本、服務至上”的服務理念,堅持“二合一”的優(yōu)良服務模式,真誠服務每家企業(yè),認真做好每個細節(jié),不斷完善自我,成就企業(yè),實現(xiàn)共贏。行業(yè)涉及成都資質(zhì)代辦等,在網(wǎng)站建設公司、全網(wǎng)整合營銷推廣、WAP手機網(wǎng)站、VI設計、軟件開發(fā)等項目上具有豐富的設計經(jīng)驗。

這里是Pipe原理的圖示:

java的NIO管道用法代碼分享

創(chuàng)建管道

通過Pipe.open()方法打開管道。例如:

Pipe pipe = Pipe.open();

 向管道寫數(shù)據(jù)

要向管道寫數(shù)據(jù),需要訪問sink通道。像這樣:

Pipe.SinkChannel sinkChannel = pipe.sink();

通過調(diào)用SinkChannel的write()方法,將數(shù)據(jù)寫入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);
}

我們在測試例子中給出一個非常簡單的管道操作,先向管道寫入內(nèi)容,再從管道讀出內(nèi)容。

 

package com.test.nio;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.Pipe;
public class TestPipeA {
	/** 
   * @param args 
   * @throws Exception 
   */
	public static void main(String[] args) throws Exception {
		//創(chuàng)建一個管道 
		Pipe pipe=Pipe.open();
		//創(chuàng)建一個寫管道 
		Pipe.SinkChannel sinkChannel=pipe.sink();
		String newData="itbuluoge.com says:"+System.currentTimeMillis();
		ByteBuffer buf=ByteBuffer.allocate(48);
		buf.clear();
		buf.put(newData.getBytes());
		buf.flip();
		/*向管道寫入內(nèi)容*/
		while(buf.hasRemaining()) 
		    {
			sinkChannel.write(buf);
		}
		/*創(chuàng)建一個讀管道*/
		Pipe.SourceChannel sourceChannel=pipe.source();
		ByteBuffer getBuf=ByteBuffer.allocate(48);
		int bytesRead=sourceChannel.read(getBuf);
		getBuf.flip();
		/*從管道讀出內(nèi)容*/
		while(getBuf.hasRemaining()) 
		    {
			System.out.print((char)getBuf.get());
		}
	}
}

輸出結(jié)果

java的NIO管道用法代碼分享

我們可以看到,已經(jīng)可以完成我們需要的目標了。注意,我在這個地方編程的時候,出現(xiàn)了一點錯誤,就是我在讀取管道的時候,沒有設置getBuf.flip(),導致無法讀出數(shù)據(jù),這個函數(shù)非常重要,在完成buffer讀取內(nèi)容之后,一定要設置一下讀標志,恢復指針到原始位置,才能讀取到全部內(nèi)容。

以上就是本文關于java的NIO管道用法代碼分享的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


網(wǎng)站名稱:java的NIO管道用法代碼分享
URL地址:http://weahome.cn/article/peeheg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部