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

深入理解Java IO的flush

 更新時(shí)間:2018年06月14日 08:12:00   投稿:laozhang  
本篇文章是小編總結(jié)的關(guān)于Java IO的flush的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友可以跟著學(xué)習(xí)下。

Java的IO是一個(gè)大知識(shí)點(diǎn),

如果把它的知識(shí)點(diǎn)拆開(kāi)來(lái)說(shuō)的話估計(jì)能說(shuō)一個(gè)星期,關(guān)于IO的體系可以看看下面這張圖,

接下來(lái)我們從一段代碼開(kāi)始聊吧,先看看下面這段代碼

public class Test {
 public static void main(String[] args) throws Exception {
  File file = new File("text.txt");
  if(!file.exists()) {
   file.createNewFile();
  }
  FileOutputStream fos = new FileOutputStream(file);
  BufferedOutputStream bos = new BufferedOutputStream(fos);
  byte[] b = new byte[1024];
  bos.write(b);
  bos.flush();
 }
}

代碼中構(gòu)造了一個(gè)緩沖流,然后往流里寫(xiě)入一個(gè)KB長(zhǎng)度的數(shù)據(jù),最后調(diào)用 flush()方法。

這是很簡(jiǎn)單的一段代碼,最終的輸出結(jié)果是會(huì)生成一個(gè) 1KB的 text.text文件。

但如果我們把最后一行注釋掉的話

//bos.flush();

最終生成的 text.text大小會(huì)變成0.

這個(gè)結(jié)果是很顯然的,不過(guò)如果我們把 flush()換成 close()的話,結(jié)果是不是還會(huì)是 0呢?

關(guān)于 flush

flush()這個(gè)東西,其實(shí)在很久以前的網(wǎng)絡(luò)傳輸中就有了

那個(gè)時(shí)候?yàn)榱诵?,服?wù)器和客戶端傳輸數(shù)據(jù)的時(shí)候不會(huì)每產(chǎn)生一段數(shù)據(jù)就傳一段數(shù)據(jù)

而是會(huì)建一個(gè)緩沖區(qū),在緩沖區(qū)滿之后再往客戶端傳輸數(shù)據(jù)

有時(shí)候會(huì)有這樣的問(wèn)題,當(dāng)數(shù)據(jù)不足以填充緩沖區(qū),而又需要往客戶端傳數(shù)據(jù),為了解決這個(gè)問(wèn)題,就有了 flush的概念,將緩沖區(qū)的數(shù)據(jù)強(qiáng)迫發(fā)送。

回到上面的問(wèn)題,如果把 flush換成 close是否可行呢

答案是可以的。

如果看源碼就知道 BufferedOutputStream的繼承關(guān)系

public class BufferOutputStream extends FilterOutputStream

BufferedOutputStream沒(méi)有實(shí)現(xiàn) close()方法,所以會(huì)直接調(diào)用 FilterOutputStream的 close(),而 FilterOutputStream的 close()方法會(huì)調(diào)用 flush()來(lái)輸出緩沖區(qū)數(shù)據(jù)。

實(shí)際開(kāi)發(fā)中關(guān)于IO操作的,都強(qiáng)調(diào)最后要調(diào)用 close()方法,上面的例子就是其中一個(gè)原因了。

相關(guān)文章

  • 學(xué)習(xí)Java中的日期和時(shí)間處理及Java日歷小程序的編寫(xiě)

    學(xué)習(xí)Java中的日期和時(shí)間處理及Java日歷小程序的編寫(xiě)

    這篇文章主要介紹了學(xué)習(xí)Java中的日期和時(shí)間處理及Java日歷小程序的編寫(xiě),這個(gè)日歷小程序僅用簡(jiǎn)單的算法實(shí)現(xiàn)沒(méi)有用到date類等,但是帶有圖形界面,需要的朋友可以參考下
    2016-02-02
  • Java線程池的應(yīng)用實(shí)例分析

    Java線程池的應(yīng)用實(shí)例分析

    這篇文章主要介紹了Java線程池的應(yīng)用,結(jié)合具體實(shí)例形式分析了java線程池的斐波那契數(shù)列計(jì)算與模擬工人做工等應(yīng)用的操作技巧,需要的朋友可以參考下
    2019-10-10
  • 從架構(gòu)思維角度分析高并發(fā)下冪等性解決方案

    從架構(gòu)思維角度分析高并發(fā)下冪等性解決方案

    冪等(idempotent、idempotence)是一個(gè)數(shù)學(xué)與計(jì)算機(jī)學(xué)概念,常見(jiàn)于抽象代數(shù)中。?在編程中.一個(gè)冪等操作的特點(diǎn)是其任意多次執(zhí)行所產(chǎn)生的影響均與一次執(zhí)行的影響相同。冪等函數(shù),或冪等方法,是指可以使用相同參數(shù)重復(fù)執(zhí)行,并能獲得相同結(jié)果的函數(shù)
    2022-01-01
  • mybatisPlus如何進(jìn)行連接問(wèn)題

    mybatisPlus如何進(jìn)行連接問(wèn)題

    MyBatisPlus提供了leftJoin方法支持左連接查詢,通過(guò)QueryWrapper構(gòu)建查詢條件,指定連接的表名和連接條件,通過(guò)select方法指定要查詢的字段
    2025-03-03
  • java實(shí)用型-高并發(fā)下RestTemplate的正確使用說(shuō)明

    java實(shí)用型-高并發(fā)下RestTemplate的正確使用說(shuō)明

    這篇文章主要介紹了java實(shí)用型-高并發(fā)下RestTemplate的正確使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 關(guān)于Http持久連接和HttpClient連接池的深入理解

    關(guān)于Http持久連接和HttpClient連接池的深入理解

    眾所周知,httpclient是java開(kāi)發(fā)中非常常見(jiàn)的一種訪問(wèn)網(wǎng)絡(luò)資源的方式了,下面這篇文章主要給大家介紹了關(guān)于Http持久連接和HttpClient連接池的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • Java連接redis報(bào)錯(cuò)timed?out問(wèn)題的解決辦法

    Java連接redis報(bào)錯(cuò)timed?out問(wèn)題的解決辦法

    最近項(xiàng)目開(kāi)發(fā)中用到了Redis,下面這篇文章主要給大家介紹了關(guān)于Java連接redis報(bào)錯(cuò)timed?out問(wèn)題的解決辦法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • 深度解析Java中CountDownLatch的原理

    深度解析Java中CountDownLatch的原理

    在高并發(fā)編程中,AbstractQueuedSynchronizer(簡(jiǎn)稱AQS)抽象的隊(duì)列同步器是我們必須掌握的,本文將通過(guò)CountDownLatch底層實(shí)現(xiàn)原理來(lái)了解AQS共享鎖模式的實(shí)現(xiàn)原理,快跟隨小編一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • SpringBoot利用dag加速Spring beans初始化的方法示例

    SpringBoot利用dag加速Spring beans初始化的方法示例

    本文介紹了利用DAG加速SpringBoot中Spring beans初始化,先解釋了DAG 概念及特性,包括節(jié)點(diǎn)入度出度、拓?fù)渑判虻?接著闡述加速Spring Bean初始化的實(shí)現(xiàn)思路,如識(shí)別依賴關(guān)系構(gòu)建DAG、拓?fù)渑判?、并行初始化Bean及與Spring集成,還展示了相關(guān)代碼工程、測(cè)試結(jié)果及引用
    2024-12-12
  • Java中數(shù)學(xué)相關(guān)類的使用教程

    Java中數(shù)學(xué)相關(guān)類的使用教程

    Java是一種廣泛使用的編程語(yǔ)言,它提供了許多數(shù)學(xué)運(yùn)算的函數(shù)和方法,使得開(kāi)發(fā)者可以輕松地進(jìn)行各種數(shù)學(xué)計(jì)算,下面這篇文章主要給大家介紹了關(guān)于Java中數(shù)學(xué)相關(guān)類使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05

最新評(píng)論

仁寿县| 玛纳斯县| 阳城县| 沙田区| 土默特左旗| 崇礼县| 盐池县| 灵丘县| 化德县| 荔浦县| 和田县| 务川| 龙海市| 仲巴县| 军事| 商都县| 清远市| 宜宾市| 石屏县| 元朗区| 深水埗区| 阿图什市| 托克逊县| 萝北县| 图们市| 商水县| 佛坪县| 新安县| 霍州市| 孙吴县| 长武县| 蕲春县| 安宁市| 忻州市| 平南县| 淮滨县| 辉南县| 阳江市| 定日县| 信丰县| 湄潭县|