Java核心API -- 11(IO流)

 
1. IO流
小程序

    1)根據方向分爲:數組

        輸入流和輸出流。方向的定了是基於咱們的程序的。流向咱們程序的流叫作:輸入流;從程序向外流的叫作:輸出流緩存

    2)流根據源頭分爲: 服務器

        基本流(節點流):從特定的地方讀寫的流類,如磁盤或一塊內存區域。即有來源。 app

        處理流(高級流、過濾流):沒有數據來源,不能獨立存在,它的存在是用於處理基本流的。是使用一個已經存在的輸入流或輸出流鏈接建立的。ide

    3)流根據處理的數據單位不一樣劃分爲:編碼

        字節流:以一個「字節」爲單位,以Stream結尾spa

        字符流:以一個「字符」爲單位,以Reader/Writer結尾3d

 

2. 基本字節流FileInputStream和FileOutputStream
code

    用於讀寫文件的字節流FIS/FOS(基本流)

    1)FileInputStream:文件字節輸入流

        FileInputStream 經常使用構造方法:

        ① FileInputStream(File file):經過打開一個到實際文件的鏈接來建立一個FileInputStream,該文件經過文件系統中的File對象file指定。即向file文件中寫入數據。

        ② FileInputStream(String filePath):經過打開一個到實際文件的鏈接來建立一個FileInputStream,該文件經過文件系統中的文件路徑名指定。也可直接寫當前項目下文件名。

        經常使用方法:

        ① int read(int d):讀取int值的低8位。

        ② int read(byte[] b):將b數組中全部字節讀出,返回讀取的字節個數。

        ③ int read(byte[] b,int offset,int length):將b數組中offset位置開始讀出length個字節。

        ④ available()方法:返回當前字節輸入流 可讀取的總字節數。

    2)FileOutputStream:文件字節輸出流

        FileOutputStream經常使用構造方法: 

        ① FileOutputStream(File File):建立一個向指定File對象表示的文件中寫入數據的文件輸出流。會重寫之前的內容,向file文件中寫入數據時,若該文件不存在,則會自動建立該文件。

        ② FileOubputStream(File file,boolean append):append爲true則對當前文件末尾進行寫操做(追加,但不重寫之前的)。

        ③ FileOubputStream(String filePath):建立一個向具備指定名稱的文件中寫入數據的文件輸出流。前提路徑存在,寫當前目錄下的文件名或者全路徑。

        ④ FileOubputStream(String filePath,boolean append):append爲true則對當前文件末尾進行寫操做(追加,但不重寫之前的)。

        經常使用方法:

        ① void write(int d):寫入int值的低8位。

        ② void write(byte[] d):將d數組中全部字節寫入。

        ③ void write(byte[] d,int offset,int length):將d數組中offset位置開始寫入length個字節。


    案例22:

        wKiom1WfdMOz-L7OAAHX5eiCxhE006.jpg


 

3. 緩衝字節流BufferedInputStream和BufferedOutputStream 

    1)BufferedInputStream:緩衝字節輸入流,構造器須要傳入基本字節輸入流BufferedInputStream(InputStream in) 

        經常使用方法:

            ① int read():從輸入流中讀取一個字節。

            ② int read(byte[] b,int offset,int length):今後字節輸入流中給定偏移量offset處開始將各字節讀取到指定的 byte 數組中。

    2)BufferedOutputStream:緩衝字節輸出流,構造器須要傳入基本字節輸出流BufferedOutputStream(OutputStream out)

        經常使用方法:

            ① void write(int d):將指定的字節寫入此緩衝的輸出流。

            ② void write(byte[] d,int offset,int length):將指定 byte數組中從偏移量 offset開始的 length個字節寫入此緩衝的輸出流。

            ③ void flush():將緩衝區中的數據一次性寫出,「清空」緩衝區。

    3)緩衝流內部維護着一個緩衝區,每次都儘量的讀取更多的字節放入到緩衝區,再將緩衝區中的內容部分或所有返回給用戶,所以能夠提升讀寫效率。

    4)有緩衝效果的流,通常爲寫入操做的流,在數據都寫完後必定要flush,flush的做用是將緩衝區中未寫出的數據一次性寫出:bos.flush();即不論緩存區有多少數據,先寫過去,緩衝區再下班~確保全部字符都寫出

    5)使用JDK的話,一般狀況下,咱們只須要關閉最外層的流。


    案例23:

        wKioL1Wfdt-BiHl1AAJVM06R27E399.jpg


 

4. 轉換流InputStreamReader和OutputStreanWriter

    以「單個字符」爲單位讀寫數據,一次處理一個字符(unicode)。 字符流底層仍是基於字節形式讀寫的,因此都是將字節流轉成字符流。在字符輸入輸出流階段,進行編碼修改與設置。 

    全部字符流都是高級流。

    1)InputStreamReader:字符輸入流。

        A.經常使用構造方法:

            InputStreamReader(InputStream in):建立一個字符集的輸入流。

            InputStreamReader(InputStream in, String charsetName):建立一個使用指定字符集的輸入流。

        B.經常使用方法:

            ① int read():讀取單個字符。

            ② int read(char cs[], int offset, int length):讀入字符數組中從offset開始的length長度的字符。

            ③ void close():關閉流。

 

    2)OutputStreamWriter:字符輸出流

        A.經常使用構造方法:

            OutputStreamWriter(OutputStream out):建立一個字符集的輸出流。

            OutputStreamWriter(OutputStream out, String charset):建立一個使用指定字符集的輸出流。

        B.經常使用方法:

            ① void write(int c):寫入單個字符。

            ② void write(char c[], int off, int len):寫入從字符數組off開頭到len長度的部分

            ③ void write(String str, int off, int len):寫入從字符串off開頭到len長度的部分。

            ④ void flush():將緩衝區中的數據一次性寫出,「清空」緩衝區。

            ⑤ void close():關閉流。

 
5. 緩衝字符流BufferedReader和BufferedWriter

    能夠以「行」爲單位讀寫「字符」,高級流。 在字符輸入輸出流修改編碼。 

    1)BufferedReader:緩衝字符輸入流,以行爲單位讀字符

        A.經常使用構造方法:

            BufferedReader(Reader in):建立一個使用默認大小的緩衝字符輸入流。

            BufferedReader(Reader in, int size):建立一個使用指定大小的緩衝字符輸入流。

        B.經常使用方法:

            ① int read():讀取單個字符。若是已到達流末尾,則返回-1。

            ② int read(char cbuf[], int off, int len):從字符數組中讀取從off開始的len長度的字符。返回讀取的字符數,若是已到達流末尾,則返回-1。

            ③ String readLine():讀取一個文本行。經過下列字符之一便可認爲某行已終止:換行 ('\n')、回車 ('\r') 或回車後直接跟着換行。若是已到達流末尾,則返回 null。EOF:end of file文件末尾。

            ④ void close():關閉流。


    案例24:

        wKioL1WfeC6zBVPxAAIOR_Ts5J8198.jpg


    案例25:

        wKioL1WffLmDoMHFAAKdUdMKpXc250.jpg    


     2)BufferedWriter:緩衝字符輸出流,以行爲單位寫字符

        A.經常使用構造方法:

            BufferedWriter(Writer out):建立一個使用默認大小的緩衝字符輸出流。

            BufferedWriter(Writer out, int size):建立一個使用給定大小的緩衝字符輸出流。

        B.經常使用方法:

            ① void write(int c):寫入單個字符。

            ② void write(char[] c,int off,int len):寫入字符數組從off開始的len長度的字符。

            ③ void write(String s,int off,int len):寫入字符串中從off開始的len長度的字符。

            ④ void newLine():寫入一個行分隔符。

            ⑤ flush():將緩衝區中的數據一次性寫出,「清空」緩衝區。

            ⑥ close():關閉流。


     案例26:

        wKiom1WfeAORiYwXAAKpFQpMl2A917.jpg


 6. PrintWriter輸出流

    是另外一種緩衝「字符」輸出流,以「行」爲單位,經常使用它做輸出,BufferedWriter用的少。

    1)Servlet:運行在服務器端的小程序,給客戶端發送相應使用的輸出流就是PrintWriter。

    2)寫方法:println(String data):帶換行符輸出一個字符串,不用手動換行了。

    3)構造方式: 

        PrintWriter(File file):以行爲單位向文件寫數據

        PrintWriter(OutputStream out):以行爲單位向字節輸出流寫數據

        PrintWriter(Writer writer):以行爲單位向字符輸出流寫數據

        PrintWriter(String fileName):以行爲單位向指定路徑的文件寫數據

    4)經常使用方法

        使用上和BufferedWriter同樣,只是使用println()會自動換行。


    案例27:

        wKioL1Wfe2KyuJEjAAJSXo_qRXc158.jpg

相關文章
相關標籤/搜索