java自學日記三

                                         java基礎之IO流(續集)

   一、字符流的緩衝區

        1、簡述

            出現原因:爲了提高操作數據的效率;

            它是結合流來使用的,對流的功能加強;

            對應的類:BufferedWriter、BufferedReader;

          2、使用

            思路:a.要想使用它,就得先創建一個流;

                       b.使用緩衝區:將創建好的流進行封裝,就是講這個流作爲參數,放入這個緩衝對象的構造函數                             中;

                       c.遇到緩衝區就得刷新,同時,還要關閉緩衝區,這就相當於關閉了流資源;

                注意:跨平臺的換行符:void newLine();這個方法是緩衝流的;

        3.具體代碼的應用:

    

        A.  BufferedWriter:

       

     B.   BufferedReader:

    

    C.文件的拷貝:

           注意:a----- readLine方法不包含任何行終止符;                                                                                                                   b-----readLine方法它的原理其實就是調用的read方法,只不過是讀取完一行纔將其fanhui

       d.自建一個緩衝區(也算是一次讀一行的方法)

      

       e.裝飾設計模式:

       當想要對已有的對象進行功能增強時,自定義一個類,將已有對象傳入,基於已有的功能並提供加強功能,那麼自定義的該類就是裝飾類。

    裝飾類一般是通過構造方法將已有對象作爲參數傳入,然後在定義類中創建一個方法,再添加一些功能;

而後調用已有對象的初級方法就形成了一個具有強大功能的方法。

 示例代碼如下:

    

      }      

  

    f.包裝類與繼承的區別:

         包裝類其實就相當於一個專業的加工工廠,什麼都加工;如果讓這個工廠屬於一個部門的話(繼承),公司加了一個新的部門(新子類)也要加工東西,要麼就得在這個新部門自己建一個加工工廠(自己再建一個裝飾類),要麼就得協調公司來共同用一個;所以如果將這個加工工廠獨立起來的話(不用去繼承,單獨一個類),就不用麻煩了,直接去加工工廠就可以了(直接去調用),方便獨立,不會與其他部門產生聯繫。當然這個加工工廠也屬於這家公司,即他們是一個系統的。

      g.自定義一個帶行號的緩衝區對象

             這個緩衝區對象的應用代碼如下:

      

       自定義的代碼如下:(當然可以繼承上面的那個自定義的MyBufferedReader)

   

      二、字節流

            1、簡述要點與注意事項

                兩基類:inputStream 、 outputStream

                 用於操作圖片數據;

                 windows中的回車是由“\r\n”組成的;(所以在上述的一個方法中最好還是加上那個\r\n的判斷)

                 字符流中的那個數組爲char類型,而字節流中的爲byte類型數組;

                 示例代碼:

        

     2、複製圖片

          複製圖片使用的是字節流,要是使用字符流的話,圖片有可能沒辦法顯示;這個原理同複製文件,只不過是        用字符流。代碼如下:

     

         3.複製MP3文件

                這裏也可用緩衝區對象來做,建立BufferedInputStream、BufferedoutputStream;這兩個也有自己的read方            法繼承的;

       

   4.   緩衝區的read原理:

       顯示代碼如下:

                

      5.   讀取鍵盤錄入  

               

        6.轉換流的出現

          

      7.鍵盤輸入屏幕輸出

       

     8.流對象的操作規律

           要明確的三個條件:源和目的、操作的文件是什麼、選用體系的哪個對象

             ---源與目的:源就是輸入(讀取)流 ;inputStream、reader

                                    目的就是輸出(寫入)流;outputStream、writer

             ---文件:是否純文本文件

                           是:用字符流

                           否:用字節流

            ---體系明確後使用的對象:

                     通過設備來區分:

                   源:內存、硬盤、鍵盤

                   目的:內存、硬盤、屏幕(控制檯)

        例如:1、文本文件

                   源    :文件;使用讀取流、reader;由於操作文件就用:FileReader;

                   目的:文件;使用寫入流、writer;由於操作文件就用:FileWriter;

                   2.非文本文件

                  源    :文件;使用讀取流、InputStream;由於操作文件就用:File

InputStream;

                  要是從控制檯輸入的話就是用System.in;

                 目的:文件;使用寫入流、OutputStream;由於操作文件就用:File

OutputStream;

                 要是從控制檯輸出的話就是用System.out;

          注意事項:要是提高效率的話,就得采用緩衝流;

                            在存儲的時候需要按照要求的編碼來寫入,只有轉換流有;即就是解碼的過程;

        9.異常日誌信息的報告

        代碼如下:

                    

    10.系統信息的輸出

          

                            

                

           

     

發佈了21 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章