最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java的NIO管道用法代碼分享

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

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

這里是Pipe原理的圖示:

創(chuàng)建管道

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

Pipe pipe = Pipe.open();

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

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

Pipe.SinkChannel sinkChannel = pipe.sink();

通過(guò)調(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);
}

我們?cè)跍y(cè)試?yán)又薪o出一個(gè)非常簡(jiǎn)單的管道操作,先向管道寫入內(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è)寫管道 
		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)建一個(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)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • Java中使用RediSearch實(shí)現(xiàn)高效的數(shù)據(jù)檢索功能

    Java中使用RediSearch實(shí)現(xiàn)高效的數(shù)據(jù)檢索功能

    RediSearch是一款構(gòu)建在Redis上的搜索引擎,它為Redis數(shù)據(jù)庫(kù)提供了全文搜索、排序、過(guò)濾和聚合等高級(jí)查詢功能,本文將介紹如何在Java應(yīng)用中集成并使用RediSearch,以實(shí)現(xiàn)高效的數(shù)據(jù)檢索功能,感興趣的朋友跟著小編一起來(lái)看看吧
    2024-05-05
  • SpringBoot?MDC全局鏈路最新完美解決方案

    SpringBoot?MDC全局鏈路最新完美解決方案

    MDC 在 Spring Boot 中的作用是為日志事件提供上下文信息,并將其與特定的請(qǐng)求、線程或操作關(guān)聯(lián)起來(lái),通過(guò)使用 MDC,可以更好地理解和分析日志,并在多線程環(huán)境中確保日志的準(zhǔn)確性和一致性,這篇文章主要介紹了SpringBoot?MDC全局鏈路解決方案,需要的朋友可以參考下
    2023-08-08
  • Java實(shí)現(xiàn)ZooKeeper的zNode監(jiān)控

    Java實(shí)現(xiàn)ZooKeeper的zNode監(jiān)控

    這篇文章主要介紹了Java實(shí)現(xiàn)ZooKeeper的zNode監(jiān)控問(wèn)題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-08-08
  • Java struts2請(qǐng)求源碼分析案例詳解

    Java struts2請(qǐng)求源碼分析案例詳解

    這篇文章主要介紹了Java struts2請(qǐng)求源碼分析案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • IntelliJ?IDEA?2022.1.1?沒(méi)有CVS的過(guò)程分析

    IntelliJ?IDEA?2022.1.1?沒(méi)有CVS的過(guò)程分析

    這篇文章主要介紹了IntelliJ?IDEA?2022.1.1?沒(méi)有CVS的過(guò)程解析,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • Spring Boot中單例類實(shí)現(xiàn)對(duì)象的注入方式

    Spring Boot中單例類實(shí)現(xiàn)對(duì)象的注入方式

    這篇文章主要介紹了Spring Boot中單例類實(shí)現(xiàn)對(duì)象的注入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • idea2020.1最新版永久破解/pycharm也可用(步驟詳解)

    idea2020.1最新版永久破解/pycharm也可用(步驟詳解)

    這篇文章主要介紹了idea2020.1最新版永久破解/pycharm也可用,本文給大家分享簡(jiǎn)單實(shí)現(xiàn)步驟,通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • springboot整合swagger3報(bào)Unable to infer base url錯(cuò)誤問(wèn)題

    springboot整合swagger3報(bào)Unable to infer base&nbs

    這篇文章主要介紹了springboot整合swagger3報(bào)Unable to infer base url錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • SpringBoot和Springfox(Swagger)版本不兼容的解決方案

    SpringBoot和Springfox(Swagger)版本不兼容的解決方案

    documentationPluginsBootstrapper這個(gè) bean 無(wú)法正常啟動(dòng),原因是遇到了空指針異常(NullPointerException),這通常是由于 Spring Boot 和 Springfox 的版本不兼容導(dǎo)致的路徑匹配策略沖突,本文給大家介紹了SpringBoot和Springfox(Swagger)版本不兼容的解決方案
    2024-12-12
  • 簡(jiǎn)單了解Spring中的事務(wù)控制

    簡(jiǎn)單了解Spring中的事務(wù)控制

    這篇文章主要介紹了簡(jiǎn)單了解Spring中的事務(wù)控制,事務(wù)是一組操作的執(zhí)行單元,下面我們來(lái)簡(jiǎn)單學(xué)習(xí)一下吧
    2019-05-05

最新評(píng)論

双城市| 台东市| 平舆县| 清苑县| 永新县| 循化| 崇义县| 思南县| 治县。| 青阳县| 大冶市| 福贡县| 轮台县| 隆昌县| 大新县| 耒阳市| 临朐县| 鸡东县| 深圳市| 沾化县| 平安县| 平乡县| 台东市| 吕梁市| 祁阳县| 出国| 上饶市| 塔河县| 满城县| 辽阳县| 石景山区| 本溪| 康乐县| 湘阴县| 广宁县| 楚雄市| 沙洋县| 淅川县| 罗田县| 清水河县| 博白县|