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

淺析Java.IO輸入輸出流 過濾流 buffer流和data流

 更新時(shí)間:2016年10月14日 11:47:58   作者:Carrol  
這篇文章主要介紹了Java.IO輸入輸出流 過濾流 buffer流和data流的相關(guān)資料,本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下

java.io使用了適配器模式裝飾模式等設(shè)計(jì)模式來解決字符流的套接和輸入輸出問題。

字節(jié)流只能一次處理一個(gè)字節(jié),為了更方便的操作數(shù)據(jù),便加入了套接流。

問題引入:

緩沖流為什么比普通的文件字節(jié)流效率高?

不帶緩沖的操作,每讀一個(gè)字節(jié)就要寫入一個(gè)字節(jié)。

由于涉及磁盤的IO操作相比內(nèi)存的操作要慢很多,所以不帶緩沖的流效率很低。

帶緩沖的流,可以一次讀很多字節(jié),但不向磁盤中寫入,只是先放到內(nèi)存里。

等湊夠了緩沖區(qū)大小的時(shí)候一次性寫入磁盤,這種方式可以減少磁盤操作次數(shù),速度就會提高很多!

這就是兩者的區(qū)別。

大概過程:

沒有緩存區(qū),那么每read一次,就會發(fā)送一次IO操作;

有緩存區(qū),第一次read時(shí),會一下讀取x個(gè)字節(jié)放入緩存區(qū),然后后續(xù)的read都會從緩存中讀取,當(dāng)read到緩存區(qū)末尾時(shí),會再次讀取x個(gè)字節(jié)放入緩存區(qū)。

很明顯,第二種方式,會減少IO操作,效率更高,缺點(diǎn)就是,內(nèi)存占用的多。

java輸入輸出流采用了多層封裝的方式進(jìn)行設(shè)計(jì)

  最底層 InputStream和OutputStream 基于字節(jié)流,沒有緩存機(jī)制,一般用BufferInputStream和BufferOutputStream進(jìn)行封裝后使用。

  BufferInputStream的read方法是阻塞線程的,BufferInputStream.read(buf) 會將輸入流內(nèi)的全部讀入buf之后才返回。

  BufferOutputStream.write(buf);會將buf中的內(nèi)容輸出到輸出流,但是記得要flush;

  還有個(gè)比較好用的PrintStream 和PrintWriter相似 可以自動刷新 只不過是對于字節(jié)流而言。

  字節(jié)流一般用于傳送二進(jìn)制文件之類 至于字符流常常用reader進(jìn)行包裝后使用。

  最常用的有BufferInputStreamReader和PrintWrinter ,BufferInputStreamReader的readline方法很實(shí)用 遇到\r\d會自動flush。

  PrintWrinter 只要在構(gòu)造函數(shù)中設(shè)置了刷新屬性為true則其println方法可以自動刷新不用flush。

FilterInputStream和FilterOutputStream:過濾流,buffer流和data流均繼承于此。

  對于buffer流,只有緩沖區(qū)滿時(shí),才會將數(shù)據(jù)真正到輸出流,但可以使用flush()方法人為的將尚未填滿的緩沖區(qū)中的數(shù)據(jù)送出;不能確定文件的編碼方式,在網(wǎng)絡(luò)上難以應(yīng)用。

  實(shí)際中用的最多的還是:data流可以讓發(fā)送方和接收方按照同一的編碼去處理。

  DataInputStream和DataOutputStream:可以接受一行的數(shù)據(jù),可以對其進(jìn)行編碼,也可以是套接流,可以套接文件字節(jié)流和網(wǎng)絡(luò)字節(jié)流,讀寫的順序要一致,否則讀取會出現(xiàn)異常。

  DataInputStream 是用來裝飾其它輸入流,它“允許應(yīng)用程序以與機(jī)器無關(guān)方式從底層輸入流中讀取基本 Java 數(shù)據(jù)類型”。應(yīng)用程序可以使用DataOutputStream(數(shù)據(jù)輸出流)寫入由DataInputStream(數(shù)據(jù)輸入流)讀取的數(shù)據(jù)。

以上所述是小編給大家介紹的Java.IO輸入輸出流 過濾流 buffer流和data流,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java雜談之重復(fù)代碼是什么

    Java雜談之重復(fù)代碼是什么

    剛開始工作時(shí),總有人開玩笑說,編程實(shí)際上就是 CV,調(diào)侃很多程序員寫程序依靠的是復(fù)制粘貼。至今,很多初級甚至高級程序員寫代碼依舊是CV,就是把其他項(xiàng)目里的一段代碼復(fù)制過來,稍加改動,然后,跑一下沒有大問題就完事。這就是在給其他人挖坑
    2021-09-09
  • mybatis-plus @DS實(shí)現(xiàn)動態(tài)切換數(shù)據(jù)源原理

    mybatis-plus @DS實(shí)現(xiàn)動態(tài)切換數(shù)據(jù)源原理

    本文主要介紹了mybatis-plus @DS實(shí)現(xiàn)動態(tài)切換數(shù)據(jù)源原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Spring Boot異常處理問題小結(jié)

    Spring Boot異常處理問題小結(jié)

    在 Spring Boot 中,異常處理是一個(gè)重要的部分,可以允許開發(fā)者優(yōu)雅地處理應(yīng)用程序中可能發(fā)生的錯(cuò)誤和異常,這篇文章主要介紹了Spring Boot異常處理問題小結(jié),需要的朋友可以參考下
    2024-05-05
  • 一起聊聊Java中的自定義異常

    一起聊聊Java中的自定義異常

    在學(xué)習(xí)Java的過程中,想必大家都一定學(xué)習(xí)過異常這個(gè)篇章,異常的基本特性和使用這里就不再多講了。本文就來和大家講講如何自定義異常
    2022-08-08
  • mybatis分頁絕對路徑寫法過程詳解

    mybatis分頁絕對路徑寫法過程詳解

    這篇文章主要介紹了mybatis分頁絕對路徑寫法過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • java、spring、springboot中整合Redis的詳細(xì)講解

    java、spring、springboot中整合Redis的詳細(xì)講解

    這篇文章主要介紹了java、spring、springboot中整合Redis的詳細(xì)講解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Spring Cloud gateway 網(wǎng)關(guān)如何攔截Post請求日志

    Spring Cloud gateway 網(wǎng)關(guān)如何攔截Post請求日志

    這篇文章主要介紹了Spring Cloud gateway 網(wǎng)關(guān)如何攔截Post請求日志的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringMVC實(shí)現(xiàn)文件下載功能

    SpringMVC實(shí)現(xiàn)文件下載功能

    這篇文章主要為大家詳細(xì)介紹了SpringMVC實(shí)現(xiàn)文件下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • SpringBoot 任務(wù)調(diào)度動態(tài)設(shè)置方式(不用重啟服務(wù))

    SpringBoot 任務(wù)調(diào)度動態(tài)設(shè)置方式(不用重啟服務(wù))

    這篇文章主要介紹了SpringBoot 任務(wù)調(diào)度 動態(tài)設(shè)置方式(不用重啟服務(wù)),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 在Spring MVC中處理請求參數(shù)的方法總結(jié)

    在Spring MVC中處理請求參數(shù)的方法總結(jié)

    在Spring MVC中處理請求參數(shù)是通過使用各種注解來實(shí)現(xiàn)的,本文給大家介紹了在Spring MVC中處理不同類型請求參數(shù)的方法,并通過代碼講解的非常詳細(xì),需要的朋友可以參考下
    2024-08-08

最新評論

祁连县| 泰和县| 连江县| 囊谦县| 花垣县| 阳山县| 林州市| 新营市| 响水县| 阿拉善右旗| 原阳县| 逊克县| 西吉县| 迭部县| 安徽省| 高清| 洪江市| 车险| 自贡市| 肃南| 富阳市| 固安县| 绥中县| 鄄城县| 兴宁市| 蓝田县| 酒泉市| 宜川县| 简阳市| 芦山县| 鲜城| 育儿| 渭源县| 灵宝市| 灯塔市| 津南区| 巍山| 滁州市| 景泰县| 甘孜| 乌拉特前旗|