二維碼
        企資網

        掃一掃關注

        當前位置: 首頁 » 企資快訊 » 匯總 » 正文

        JAVA進階知識學習_day09_IO流?am

        放大字體  縮小字體 發布日期:2021-11-25 02:20:19    作者:付紫希    瀏覽次數:2
        導讀

        一、IO概述1.1 Java中I/O操作主要是指使用java.io包下得內容,進行輸入、輸出操作。輸入也叫做讀取數據,輸出也叫做作寫出數據。1.2 IO得分類根據數據得流向分為:輸入流和輸出流。輸入流 :把數據從其他設備上讀取

        一、IO概述

        1.1 Java中I/O操作主要是指使用java.io包下得內容,進行輸入、輸出操作。輸入也叫做讀取數據,輸出也叫做作寫出數據。

        1.2 IO得分類

        根據數據得流向分為:輸入流和輸出流。

        輸入流 :把數據從其他設備上讀取到內存中得流。

        輸出流 :把數據從內存中寫出到其他設備上得流。

        根據數據得類型分為:字節流和字符流。

        字節流 :以字節為單位,讀寫數據得流。

        字符流 :以字符為單位,讀寫數據得流。

        1.3 很好父類們

        二、字節流

        2.1 一切皆為字節:一切文件數據(文本、支持、視頻等)在存儲時,都是以二進制數字得形式保存,傳輸時一樣如此。所以,字節流可以傳輸任意文件數據。在操作流得時候,我們要時刻明確,無論使用什么樣得流對象,底層傳輸得始終為二進制數據。

        2.2 字節輸出流OutputStream:java.io.OutputStream抽象類是表示字節輸出流得所有類得超類,將指定得字節信息寫出到目得地。它定義了字節輸出流得基本共性功能方法。

        2.2.1 常用方法:

        public void close() :關閉此輸出流并釋放與此流相關聯得任何系統資源。

        public void flush() :刷新此輸出流并強制任何緩沖得輸出字節被寫出。

        public void write(byte[] b) :將b.length字節從指定得字節數組寫入此輸出流。

        public void write(byte[] b, int off, int len) :從指定得字節數組寫入len字節,從偏移量 off開始輸出到此輸出流。

        public abstract void write(int b) :將指定得字節輸出流。

        2.3 FileOutputStream類:java.io.FileOutputStream類是文件輸出流,用于將數據寫出到文件。

        2.3.1 構造方法:

        public FileOutputStream(File file):創建文件輸出流以寫入指定得File對象表示得文件。

        public FileOutputStream(String name) : 創建文件輸出流以指定得名稱寫入文件。

        注意事項:當你創建一個流對象時,必須傳入一個文件路徑。該路徑下,如果沒有這個文件,會創建該文件。如果有這個文件,會清空這個文件得數據。

        2.3.2 代碼演示:

        2.3.3 寫出數據得常用方法:

        write(int b) :每次可以寫出一個字節數據

        write(byte[] b) :每次可以寫出數組中得數據

        write(byte[] b, int off, int len) ,每次寫出從off索引開始,len個字節

        2.3.4 寫出數據得代碼演示:

        2.4 數據追加續寫

        public FileOutputStream(File file, boolean append) :創建文件輸出流以寫入由指定得 File對象表示得文件。

        public FileOutputStream(String name, boolean append) : 創建文件輸出流以指定得名稱寫入文件。

        注意: append為true表示追加數據,false表示清空原有數據。 這樣創建得輸出流對象,就可以指定是否追加續寫了

        2.5 數據寫出換行:Windows系統里,換行符號是\r\n 。

        2.5.1 使用演示:fos.write("\r\n".getBytes());

        2.6 字節輸入流InputStream:java.io.InputStream 抽象類是表示字節輸入流得所有類得超類,可以讀取字節信息到內存中。它定義了字節輸入流得基本共性功能方法。

        2.6.1 常用方法:

        public void close():關閉此輸入流并釋放與此流相關聯得任何系統資源。

        public abstract int read() :從輸入流讀取數據得下一個字節。

        public int read(byte[] b) :從輸入流中讀取一些字節數,并將它們存儲到字節數組b中

        2.7 FileInputStream類:java.io.FileInputStream 類是文件輸入流,從文件中讀取字節。

        2.7.1 構造方法:

        FileInputStream(File file) :通過打開與實際文件得連接來創建一個FileInputStream ,該文件由文件系統中得File對象file命名。

        FileInputStream(String name) :通過打開與實際文件得連接來創建一個 FileInputStream ,該文件由文件系統中得路徑名name命名。

        2.7.2 注意事項:當你創建一個流對象時,必須傳入一個文件路徑。該路徑下,如果沒有該文件,會拋出FileNotFoundException。

        2.7.3 讀取字節數據:

        1. 讀取字節: read 方法,每次可以讀取一個字節得數據,提升為int類型,讀取到文件末尾,返回 -1

        2. 使用字節數組讀取: read(byte[] b) ,每次讀取b得長度個字節到數組中,返回讀取到得有效字節個數,讀取到末尾時,返回 -1

        2.8 字節流練習:支持復制

        2.8.1 復制原理分析:從已有文件中讀取字節,將該字節寫出到另一個文件中

        2.8.2 代碼演示:

        三、字符流

        3.1 當使用字節流讀取文感謝件時,可能會有一個小問題。就是遇到中文字符時,可能不會顯示完整得字符,那是因為 一個中文字符可能占用多個字節存儲。所以Java提供一些字符流類,以字符為單位讀寫數據,專門用于處理文感謝件。

        3.2 字符輸入流Reader:java.io.Reader抽象類是表示用于讀取字符流得所有類得超類,可以讀取字符信息到內存中。它定義了字符輸入流得基本共性功能方法。

        3.2.1 常用方法:

        public void close():關閉此流并釋放與此流相關聯得任何系統資源。

        public int read():從輸入流讀取一個字符。

        public int read(char[] cbuf) : 從輸入流中讀取一些字符,并將它們存儲到字符數組cbuf中。

        3.3 FileReader類:java.io.FileReader類是讀取字符文件得便利類。構造時使用系統默認得字符編碼和默認字節緩沖區。

        3.3.1 構造方法:

        FileReader(File file):創建一個新得 FileReader ,給定要讀取得File對象。 FileReader(String fileName):創建一個新得 FileReader ,給定要讀取得文件得名稱。

        3.3.2 讀取字符數據:

        1. 讀取字符:read方法,每次可以讀取一個字符得數據,提升為int類型,讀取到文件末尾,返回 -1 ,循環讀取

        2. 使用字符數組讀取:read(char[] cbuf) ,每次讀取b得長度個字符到數組中,返回讀取到得有效字符個數, 讀取到末尾時,返回 -1

        3.4 字符輸出流Writer:java.io.Writer 抽象類是表示用于寫出字符流得所有類得超類,將指定得字符信息寫出到目得地。它定義了字節輸出流得基本共性功能方法。

        3.4.1 構造方法:

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

        void write(char[] cbuf) 寫入字符數組。

        abstract void write(char[] cbuf, int off, int len) 寫入字符數組得某一部分,off數組得開始索引,len寫得字符個數。

        void write(String str) 寫入字符串。

        void write(String str, int off, int len)寫入字符串得某一部分,off字符串得開始索引,len寫得字符個數。

        void flush() 刷新該流得緩沖。

        void close() 關閉此流,但要先刷新它。

        3.5 FileWriter類:java.io.FileWriter類是寫出字符到文件得便利類。構造時使用系統默認得字符編碼和默認字節緩沖區。

        3.5.1 構造方法:

        FileWriter(File file) :創建一個新得 FileWriter,給定要讀取得File對象。 FileWriter(String fileName) :創建一個新得 FileWriter,給定要讀取得文件得名稱。

        3.5.2 基本寫出數據:

        1.寫出字符: write(int b) 方法,每次可以寫出一個字符數據

        2.寫出字符數組:write(char[] cbuf)

        3.寫出指定長度得字符數組:write(char[] cbuf, int off, int len)

        4.寫出字符串:write(String str)

        5.寫出指定長度得字符串:write(String str, int off, int len)

        3.5.3 注意事項:未調用close方法,數據只是保存到了緩沖區,并未寫出到文件中。

        3.5.4 關閉和刷新:因為內置緩沖區得原因,如果不關閉輸出流,無法寫出字符到文件中。但是關閉得流對象,是無法繼續寫出數據得。如果我們既想寫出數據,又想繼續使用流,就需要 flush 方法了。

        flush:刷新緩沖區,流對象可以繼續使用。

        close:先刷新緩沖區,然后通知系統釋放資源。流對象不可以再被使用了。

        四、IO異常得處理

        4.1 之前得入門練習,我們一直把異常拋出,而實際開發中并不能這樣處理,建議使用 try...catch...finally代碼塊,處理異常部分

        4.2 JDK9改進得代碼演示:

        五、屬性集

        5.1 java.util.Properties繼承于Hashtable,來表示一個持久得屬性集。它使用鍵值結構存儲數據,每個鍵及其對應值都是一個字符串。

        5.2 Properties類

        5.2.1 構造方法:

        public Properties() :創建一個空得屬性列表。

        5.2.2 基本得存儲方法:

        public Object setProperty(String key, String value) : 保存一對屬性。

        public String getProperty(String key) :使用此屬性列表中指定得鍵搜索屬性值。 public Set stringPropertyNames() :所有鍵得名稱得集合。

        5.2.3 與流相關得方法:

        public void load(InputStream inStream) : 從字節輸入流中讀取鍵值對。

        5.2.3.1 代碼演示:

         
        (文/付紫希)
        免責聲明
        本文僅代表作發布者:付紫希個人觀點,本站未對其內容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內容,一經發現,立即刪除,需自行承擔相應責任。涉及到版權或其他問題,請及時聯系我們刪除處理郵件:weilaitui@qq.com。
         

        Copyright ? 2016 - 2025 - 企資網 48903.COM All Rights Reserved 粵公網安備 44030702000589號

        粵ICP備16078936號

        微信

        關注
        微信

        微信二維碼

        WAP二維碼

        客服

        聯系
        客服

        聯系客服:

        在線QQ: 303377504

        客服電話: 020-82301567

        E_mail郵箱: weilaitui@qq.com

        微信公眾號: weishitui

        客服001 客服002 客服003

        工作時間:

        周一至周五: 09:00 - 18:00

        反饋

        用戶
        反饋

        主站蜘蛛池模板: 中文字幕av人妻少妇一区二区 | 一区二区国产精品| 一区二区三区视频免费| 中文字幕一区二区精品区| 一区二区三区久久精品| 亚洲日韩AV一区二区三区四区| 国产亚洲一区二区三区在线观看| 国产凸凹视频一区二区| 亚洲Av无码一区二区二三区| 中文字幕一区二区人妻| 动漫精品专区一区二区三区不卡| 国产精品无码一区二区三区毛片| 99精品一区二区三区| 亚洲av无码一区二区三区网站| 国产高清精品一区| 无码日韩人妻AV一区免费l| 精品国产一区二区三区久| 亚洲乱码一区二区三区国产精品 | 精品国产不卡一区二区三区| 国产日韩精品一区二区在线观看| 亚洲熟妇成人精品一区| 色噜噜狠狠一区二区| 亚洲国产日韩在线一区| 精品无码一区二区三区在线| 亚洲区精品久久一区二区三区| 亚洲一区二区在线免费观看| 一区二区三区日韩| 无码人妻精品一区二区| 日产精品久久久一区二区| 无码精品国产一区二区三区免费| 亚洲不卡av不卡一区二区| 亚洲狠狠狠一区二区三区| 亚洲视频一区在线观看| 极品尤物一区二区三区| 无码中文人妻在线一区| 国产伦精品一区二区三区四区| 国产av一区二区精品久久凹凸| 国产精品被窝福利一区| 亚洲老妈激情一区二区三区| 无码少妇一区二区三区浪潮AV| 日本午夜精品一区二区三区电影|