欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java的NIO管道用法代碼分享

 更新時(shí)間:2017年12月06日 09:25:14   作者:IT老蔣  
這篇文章主要介紹了java的NIO管道用法代碼分享,具有一定借鑒價(jià)值,需要的朋友可以參考下。

Java的NIO中的管道,就類(lèi)似于實(shí)際中的管道,有兩端,一段作為輸入,一段作為輸出。也就是說(shuō),在創(chuàng)建了一個(gè)管道后,既可以對(duì)管道進(jìn)行寫(xiě),也可以對(duì)管道進(jìn)行讀,不過(guò)這兩種操作要分別在兩端進(jìn)行。有點(diǎn)類(lèi)似于隊(duì)列的方式。

這里是Pipe原理的圖示:

創(chuàng)建管道

通過(guò)Pipe.open()方法打開(kāi)管道。例如:

Pipe pipe = Pipe.open();

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

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

Pipe.SinkChannel sinkChannel = pipe.sink();

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

我們?cè)跍y(cè)試?yán)又薪o出一個(gè)非常簡(jiǎn)單的管道操作,先向管道寫(xiě)入內(nèi)容,再?gòu)墓艿雷x出內(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)建一個(gè)管道 
		Pipe pipe=Pipe.open();
		//創(chuàng)建一個(gè)寫(xiě)管道 
		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();
		/*向管道寫(xiě)入內(nèi)容*/
		while(buf.hasRemaining()) 
		    {
			sinkChannel.write(buf);
		}
		/*創(chuàng)建一個(gè)讀管道*/
		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é)果

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

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

相關(guān)文章

  • springboot大文件上傳、分片上傳、斷點(diǎn)續(xù)傳、秒傳的實(shí)現(xiàn)

    springboot大文件上傳、分片上傳、斷點(diǎn)續(xù)傳、秒傳的實(shí)現(xiàn)

    本文主要介紹了springboot大文件上傳、分片上傳、斷點(diǎn)續(xù)傳、秒傳的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java?Web實(shí)現(xiàn)簡(jiǎn)易圖書(shū)管理系統(tǒng)

    Java?Web實(shí)現(xiàn)簡(jiǎn)易圖書(shū)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java?Web實(shí)現(xiàn)簡(jiǎn)易圖書(shū)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 使用shardingsphere對(duì)SQLServer坑的解決

    使用shardingsphere對(duì)SQLServer坑的解決

    本文主要介紹了使用shardingsphere對(duì)SQLServer坑的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • 淺析Spring boot 中 logback 配置<springProperty> 讀取application.properties 中的屬性

    淺析Spring boot 中 logback 配置<springPropert

    這篇文章主要介紹了淺析Spring boot 中 logback 配置<springProperty> 讀取application.properties 中的屬性,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • spring?webClient配置及使用簡(jiǎn)單代碼示例

    spring?webClient配置及使用簡(jiǎn)單代碼示例

    WebClient是Spring框架5.0引入的基于響應(yīng)式編程模型的HTTP客戶(hù)端,它提供一種簡(jiǎn)便的方式來(lái)處理HTTP請(qǐng)求和響應(yīng),支持異步和非阻塞式的請(qǐng)求和響應(yīng)處理,下面這篇文章主要給大家介紹了關(guān)于spring?webClient配置及使用的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • 詳解java爬蟲(chóng)jsoup解析多空格class數(shù)據(jù)

    詳解java爬蟲(chóng)jsoup解析多空格class數(shù)據(jù)

    在本篇內(nèi)容中小編給大家分享了java爬蟲(chóng)jsoup怎么解析多空格class數(shù)據(jù)的方法和技巧,需要的朋友們跟著學(xué)習(xí)下。
    2018-12-12
  • Spring Cloud動(dòng)態(tài)配置刷新RefreshScope使用示例詳解

    Spring Cloud動(dòng)態(tài)配置刷新RefreshScope使用示例詳解

    這篇文章主要為大家介紹了Spring Cloud動(dòng)態(tài)配置刷新RefreshScope使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Java利用SpEL表達(dá)式實(shí)現(xiàn)權(quán)限校驗(yàn)

    Java利用SpEL表達(dá)式實(shí)現(xiàn)權(quán)限校驗(yàn)

    這篇文章主要為大家詳細(xì)介紹了Java如何利用SpEL表達(dá)式實(shí)現(xiàn)權(quán)限校驗(yàn)功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • Java設(shè)計(jì)通用的返回?cái)?shù)據(jù)格式過(guò)程講解

    Java設(shè)計(jì)通用的返回?cái)?shù)據(jù)格式過(guò)程講解

    現(xiàn)在很多的項(xiàng)目server端返回client端的數(shù)據(jù)多數(shù)以JSON格式返回,同時(shí)結(jié)合其它需要,通常加一下?tīng)顟B(tài)碼和信息之類(lèi),給前端處理帶來(lái)很大的方便,這篇文章就用Java設(shè)計(jì)了通用的返回?cái)?shù)據(jù)格式,感興趣的同學(xué)可以參考下文
    2023-05-05
  • 關(guān)于SpringCloud?Ribbon替換輪詢(xún)算法問(wèn)題

    關(guān)于SpringCloud?Ribbon替換輪詢(xún)算法問(wèn)題

    Spring?Cloud?Ribbon是基于Netlix?Ribbon實(shí)現(xiàn)的一套客戶(hù)端負(fù)載均衡的工具。接下來(lái)通過(guò)本文給大家介紹SpringCloud?Ribbon替換輪詢(xún)算法問(wèn)題,需要的朋友可以參考下
    2022-01-01

最新評(píng)論