日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

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

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

一、OutputStream—字節輸出流

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

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

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

    總結:非buffer字節流才不需要調用flush

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

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

    文章轉自

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。