首頁>Club>
12
回覆列表
  • 1 # 我是小王的王

    流的概述:

    在java中,將不同的輸入輸出源透過流的形式進行相關操作(輸入,輸出),流是一種抽象描述,在程式中表示資料的一種轉移方式Jdk提供了各種不同的流用於處理不同的輸入輸出源,根據流性質劃分分為以下型別:

    按流向分(站在程式角度考慮)

    輸入流(input)

    輸出流(output)

    按型別分:

    位元組流(InputStream/OutputStream)

    任何檔案都可以透過位元組流進行傳輸。

    字元流(Reader/Writer)

    非純文字檔案,不能用字元流,會導致檔案 格式破壞,不能正常執行。

    節點流(低階流:直接跟輸入輸出源對接)

    FileInputStream/FileOutputStream/FileReader/FileWriter/PrintStream/PrintWriter.

    處理流(高階流:建立在低階流的基礎上)

    轉換流:InputStreamReader/OutputStreamWriter,位元組流轉字元流/字元流轉位元組流

    緩衝流:BufferedInputStream/BufferedOutputStream BufferedReader/BufferedReader可對節點流經行包裝,使讀寫更快

  • 2 # 碼行天下
    什麼是IOI是Input,O是Output,IO就是輸入與輸出,Java的輸入機制允許程式讀取外部資料,輸出機制允許程式將程式資料輸出到外部儲存裝置IO常用類檔案流:FileInputStream/FileOutputStream, FileReader/FileWriter這四個類是專門操作檔案流的,用法高度相似,區別在於前面兩個是操作位元組流,後面兩個是操作字元流。它們都會直接操作檔案流,直接與OS底層互動。因此他們也被稱為節點流

    注意使用這幾個流的物件之後,需要關閉流物件,因為java垃圾回收器不會主動回收。不過在Java7之後,可以在 try() 括號中開啟流,最後程式會自動關閉流物件,不再需要顯示地close

    包裝流:PrintStream/PrintWriter/Scanner

    PrintStream可以封裝(包裝)直接與檔案互動的節點流物件OutputStream, 使得程式設計人員可以忽略裝置底層的差異,進行一致的IO操作。因此這種流也稱為處理流或者包裝流。

    PrintWriter除了可以包裝位元組流OutputStream之外,還能包裝字元流Writer

    Scanner可以包裝鍵盤輸入,方便地將鍵盤輸入的內容轉換成我們想要的資料型別

    字串流:StringReader/StringWriter這兩個操作的是專門操作String字串的流,其中StringReader能從String中方便地讀取資料並儲存到char陣列,而StringWriter則將字串型別的資料寫入到StringBuffer中轉換流:InputStreamReader/OutputStreamReader這兩個類可以將位元組流轉換成字元流,被稱為位元組流與字元流之間的橋樑。我們經常在讀取鍵盤輸入(System.in)或網路通訊的時候,需要使用這兩個類緩衝流:BufferedReader/BufferedWriter , BufferedInputStream/BufferedOutputStream

    經過Buffered處理過的輸入流將會從一個buffer記憶體區域讀取資料,本地API只會在buffer空了之後才會被呼叫(可能一次呼叫會填充很多資料進buffer)。

    經過Buffered處理過的輸出流將會把資料寫入到buffer中,本地API只會在buffer滿了之後才會被呼叫。

  • 3 # 曉林之家

    .按照流的流向分,可以分為輸入流和輸出流;

    •按照操作單元劃分,可以劃分為位元組流和字元流;

    •按照流的角色劃分為節點流和處理流。

    Java Io流共涉及40多個類,這些類看上去很雜亂,但實際上很有規則,而且彼此之間存在非常緊密的聯絡, Java I0流的40多個類都是從如下4個抽象類基類中派生出來的。

  • 4 # 農非農

    Java語言定義了許多類專門負責各種方式的輸入或者輸出,根據資料流向的不同分為輸入流和輸出流,根據處理資料型別的不同分為字元流和位元組流。這些類都被放在java.io包中。

    a、所有輸入流類都是抽象類InputStream(位元組輸入流)或者抽象類Reader(字元輸入流)的子類。

    b、所有輸出流都是抽象類OutputStream(位元組輸出流)或者Writer(字元輸出流)的子類。

    InputStream類是位元組輸入流的抽象類,是所有位元組輸入流的父類,InputStream類具有層次結構如下圖所示;

    位元組輸入流

    java中的字元是Unicode編碼的,是雙位元組的。InputStream是用來處理位元組的,在處理字元文字時很不方便。Java為字元文字的輸入提供了專門的一套類Reader。Reader類是字元輸入流的抽象類,所有字元輸入流的實現都是它的子類。

    字元輸入流

    輸出流OutputStream類是位元組輸入流的抽象類,此抽象類表示輸出位元組流的所有類的超類。

    位元組輸出流

    Writer類是字元輸出流的抽象類,所有字元輸出類的實現都是它的子類。

    字元輸出流

  • 5 # loveVlog

    按照流的流向分,可以分為輸入流和輸出流;按照操作單元劃分,可以劃分為位元組流和字元流;按照流的角色劃分為節點流和處理流。

    Java Io流共涉及40多個類,這些類看上去很雜亂,但實際上很有規則,而且彼此之間存在非常緊密的聯絡, Java I0流的40多個類都是從如下4個抽象類基類中派生出來的。

    InputStream/Reader: 所有的輸入流的基類,前者是位元組輸入流,後者是字元輸入流。OutputStream/Writer: 所有輸出流的基類,前者是位元組輸出流,後者是字元輸出流。

    按操作方式分類結構圖:

  • 6 # 兩天半米

    這種問題不建議在這裡問,或者在這裡找答案。

    隨便拿一本JAVA基礎方面的書,都會把流說的明明白白

  • 7 # 仲小九929

    按照流的流向分,可以分為輸入流和輸出流;按照操作單元劃分,可以劃分為位元組流和字元流;按照流的角色劃分為節點流和處理流。

  • 中秋節和大豐收的關聯?
  • 我們這裡還是春天,你那裡是什麼樣子呢?