天天看點

Java中的I/O輸入輸出流概述

       流是一組有序的資料序列,根據操作類型,可以分為輸入流和輸出流兩種,Java語言中定義的負責各種輸入輸出的類都被放在java.io包中。其中所有的輸入流類都是抽象類InputStream(位元組輸入流)或抽象類Reader(字元輸入流)的子類;而所有的輸出流都是抽象類OutStream(位元組輸出流)或抽象類Writer(字元輸出流)的子類。

一. 輸入流

      1. InputStream類是位元組輸入流的抽象類,是所有位元組輸入流的父類,其層次結構為:

Java中的I/O輸入輸出流概述

                                                                                                                      圖1 InputStream類的層次結構

      該類中所有方法遇到錯誤都會引發IOException異常,簡要說明部分方法:

  • read()方法:從輸入流中讀取資料的下一個位元組。傳回0~255範圍内的int位元組值。如果因為已經到達流末尾而沒有可用的位元組,則傳回-1.
  • read(byte[] b):從輸入流中讀入一定長度的位元組,并以整數的形式傳回位元組數。
  • mark(int readlimit)方法:在輸入流的目前位置放置一個标記,readlimit參數告知此輸入流在标記位置失效之前允許讀取的位元組數。
  • reset()方法:将輸入指針傳回到目前所做的标記處。
  • skip(long n)方法:跳過輸入流上的n個位元組并傳回實際跳過的位元組數。
  • markSupported()方法:如果目前流支援mark()/reset()操作就傳回True。
  • close()方法:關閉此輸入流并釋放與該流關聯的所有系統資源。

      2. Reader類是字元輸入流的抽象類,所有的字元輸入流都是它的子類,其層次結構為:

Java中的I/O輸入輸出流概述

                                                                                                                      圖2 Reader類的層次結構

        Reader類中方法與InputStream類中的方法類似。

二. 輸出流

     1. OutputStream類是位元組輸出流的抽象類,此抽象類是表示輸出位元組流的所有類的超類,其層次結構為:

Java中的I/O輸入輸出流概述

                                                                                                                      圖3 OutputStream類的層次結構

      OutputStream類中的所有方法均傳回void,在遇到錯誤時引發IOException異常,簡單說明部分方法:

  • write(int b)方法:将指定的位元組寫入此輸出流。
  • write(byte[] b)方法:将b個位元組從指定的byte數組寫入此輸出流。
  • write(byte[] b, int off, int len)方法:将指定byte數組中從偏移量off開始的len個位元組寫入此輸出流。
  • flush()方法:徹底完成輸出并清空緩存區。
  • close()方法:關閉輸出流。

       2. Write類是字元輸出流的抽象類,所有的字元輸出類都是它的子類,其層次結構為:

Java中的I/O輸入輸出流概述

                                                                                                         圖4 Writer類的層次結構

 在學習過程中做做筆記。