日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Java输出流需要注意的几点细节

發(fā)布時間:2025/3/15 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java输出流需要注意的几点细节 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、OutputStream—字節(jié)輸出流

  • FileOutputStream—字節(jié)文件輸出流,write數(shù)據(jù)后立刻寫到文件中去
  • BufferedOutputStream—帶緩沖區(qū)的字節(jié)輸出流,數(shù)據(jù)會先存放到緩存取,緩沖區(qū)滿的話會自動flush到目的地。 也就是說這個類寫數(shù)據(jù)必須要調(diào)用flush方法,否則數(shù)據(jù)無法寫到目的地,當(dāng)然也可以調(diào)用close方法,這個方法關(guān)閉流的時候會自動flush
  • 二、Writer----字符輸出流

  • FileWriter—字符文件輸出流,write后,會將字符轉(zhuǎn)換成字節(jié)緩存到底層的bytebuffer中去,如果滿了(或者調(diào)用flush,close方法),才會輸出到目的地。
  • BufferedWriter—字符緩沖輸出流,writer后,會將字符緩存起來,如果滿了(或者調(diào)用了flush,close方法),才會輸出到目的地
  • PrintWriter----字符輸出流(可看成也是一個包裝類,帶緩沖區(qū)的,與BufferedWriter功能相似) 可以設(shè)置自動刷新,使用println(xxx)方法,自動輸出到目的地。如果沒有指定自動刷新,必須調(diào)用flush或者close方法。
  • 三、問題

  • 什么時候要用flush()方法?
  • 上面的總結(jié)可以發(fā)現(xiàn):字節(jié)流只有非Buffered的輸出流才不需要調(diào)用flush() 或者使用了PrintWriter自動刷新了,BufferedOutputStream BufferedWriter PrintWriter(非自動刷新) 都需要顯示的調(diào)用flush()方法。當(dāng)然close的時候也會刷新,但是可能close的時候報錯(這個方法會拋出異常),或者想及時的把數(shù)據(jù)發(fā)送給對方或者輸出到文件,最好還是flush()一下。

    總結(jié):非buffer字節(jié)流才不需要調(diào)用flush

  • 什么時候用字符流,什么時候用字節(jié)流?
  • 字符操作用writer(最好是BufferedWriter)效率更高,操作方法
    如果操作需要換行字符的使用PrintWriter。操作二進(jìn)制文件,圖片,音頻等數(shù)據(jù)的時候,用字節(jié)流(最好使用BufferedOutputStream,效率高)

  • 網(wǎng)絡(luò)傳輸過程中-Socket編程過程中應(yīng)該怎么使用輸出流,輸入流?
    • 發(fā)送圖片,二進(jìn)制文件,對象流等—最好使用BufferedOutputStream包裝,然后輸出字節(jié)流,需要flush
    • 發(fā)送字符串----最好用BufferedWriter或者PrintWriter包裝,然后輸出字符串,需要flush
  • socket相關(guān)
  • socket讀取的時候,read()操作是阻塞式的,也就是說,除非一端flush或者使用了非包裝的字節(jié)流,這邊才能讀取到數(shù)據(jù),當(dāng)對方close關(guān)閉流的時候,才是真正的讀取完畢

    文章轉(zhuǎn)自

    總結(jié)

    以上是生活随笔為你收集整理的Java输出流需要注意的几点细节的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。