Java IO 流學習

來源:互聯網
上載者:User

一、IO流的三種分類方式

    1.按流的方向分為:輸入資料流和輸出資料流

    2.按流的資料單位不同分為:位元組流和字元流

    3.按流的功能不同分為:節點流和處理流

二、IO流的四大抽象類別:

    字元流:Reader Writer

    位元組流:InputStream(讀資料)

    OutputStream(寫資料)

三、InputStream的基本方法

    int read() throws IOException 讀取一個位元組以整數形式返回,如果返回-1已到輸入資料流的末尾

    void close() throws IOException 關閉流釋放記憶體資源

    long skip(long n) throws IOException 跳過n個位元組不讀

四、OutputStream的基本方法

    void write(int b) throws IOException 向輸出資料流寫入一個位元組資料

    void flush() throws IOException 將輸出資料流中緩衝的資料全部寫出到目的地

五、Writer的基本方法

    void write(int c) throws IOException 向輸出資料流寫入一個字元資料

    void write(String str) throws IOException將一個字串中的字元寫入到輸出資料流

    void write(String str,int offset,int length)

    將一個字串從offset開始的length個字元寫入到輸出資料流

    void flush() throws IOException

    將輸出資料流中緩衝的資料全部寫出到目的地

六、Reader的基本方法

    int read() throws IOException 讀取一個字元以整數形式返回,如果返回-1已到輸入資料流的末尾

七、節點流類型

    pf36_1.jpg

八、訪問檔案之FileInputStream和FileOutputStream繼承基類用於向檔案中輸入輸出位元組

九、訪問檔案之FileReader和FileWriter繼承基類用於向檔案中輸入輸出字元

   ----輸出資料流在建構函式第二個參數可以設定true意義為跟在已有檔案後進行輸入
    ----此類流會拋出FileNotFoundException需要對其進行顯示捕捉

十、緩衝流:緩衝流要套接在相應的節點流之上,提高了讀寫的效率。

    此處理流的構造方法都得傳相對應的基類類型

    BufferedReader:提供了readLine方法用於高校讀取一行字串

    BufferedWriter:提供了newLine用於寫入一個行分隔字元也就是換行

    BufferedInputStream 沒多大用處

    BufferedOutputStream 沒多大用處

十一、轉換流:主要作用將位元組流轉換成字元流。用處較大!

    轉換流在構造時可以指定其編碼集合

    InputStreamReader需要和InputStream套接

    OutputStreamWriter需要和OutputStream套接

    例:OutputStreamWriter osw = new OutputStreamWriter (new FileOutputStream(檔案路徑);

    方法例:osw.getEncoding(); 獲得流的編碼方式

十二、資料流與位元組數組流:

    資料流主要為實現可以存取Java未經處理資料類型如long,boolean

    資料流是位元組流

    DataInputStream需要和InputStream套接

    DataOutputStream需要和OutputStream套接

    DataInputStream方法:readBoolean() readInt() read……()……

    readUTF():網路傳輸常用方法 讀一個Unicode字串

    DataOutputStream方法與DataInputStream基本對應為寫的方法

    //此建構函式等於已可以往一個位元組數組裡輸入內容

    ByteArrayOutputStream baos = new ByteArrayOutputStream ();

    //此方法為擷取一個位元組數組方法返回位元組數組

    baos.toByteArray();

    //此方法擷取位元組數組佔了多少位元組

    new ByteArrayInputStream(一個位元組數組)。available()

    qqread_main_bg.jpg

十二、Print流

    Print流只有輸出資料流無輸入資料流,PrintWriter和PrintStream分別針對字元位元組

    兩個類提供了重載的Print和Println方法用於多種資料類型的輸出

    PrintWriter和PrintStream的輸出操作不會拋出異常

    PrintWriter和PrintStream有自動flush功能

    ----System.setOut(接收OutputStream類):用於設定系統預設輸出資料流

十二、Object流

    等同於c#序列化,用直接將Object寫入或讀出

    transient關鍵字為不序列化此成員變數

    需要序列化的類必須實現Serializable介面

    主要方法:writeObject(Object); readObject();

    讀出為Object類型需要強轉資料類型

    qqread_main_bg1.jpg

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.