天天看點

韓順平io聽課筆記

1.檔案基礎

2.建立檔案File類,

new隻是寫入記憶體,調用fileName.creatNewFile()真正建立檔案;

路徑需要\

調用不同構造器實作不同的建立方法,append(Writer,Output)

3.擷取檔案資訊,File類;調用方法get。。。

4.mkdir()一級目錄,mkdirs()多級目錄;目錄也被視為檔案

5.io流原理和分類,io體系結構圖;位元組流,字元流

6.FileInputStream,流建立後,消耗資源,需要關閉finally{FileInputStream.close()};Ctrl+Alt+T,快捷生成try\catch;read()方法傳回值不為-1,則繼續輸入;

檔案讀取到記憶體

7.FileOutputStream,建立輸出流,目錄存在,可以自動建立檔案;str.getBytes()自符串轉為位元組數組;調用不同構造器,可以實作覆寫/追加的效果,append=true;三種寫入方式:單個字元,String字元數組,确定位置的字元數組(off偏移量,len長度);

8.檔案拷貝,輸入流将檔案讀到程式中,輸出流将檔案寫到指定位置;讀取部分就開始寫入,循環;寫入圖檔,一定要通過指定長度的方式實作,變量readlen存儲指定的長度;字元數組byte[];關閉輸入輸出流,釋放資源

9.檔案字元流,FileReader,FileWriter,每次讀取單個字元,讀入漢字友善;char[];FileWriter覆寫/追加,重新整理構造,使用後close,flush,不然寫入檔案還在記憶體

10.FileReader,繼承InputStreamReader;fileReader.read()單字元讀取;

char[] buf字元數組讀取new String(buf,0,readLen).sout;

11.FileWriter,五種寫入方式(繼承自Writer);使用後一定要,close,flush;close=flush+關閉

12.節點流處理流;節點流:從某一個特定的資料源讀取資料,如檔案,數組,管道,偏底層,效率低;處理流(也叫包裝流),BufferedReader源碼:可以包裝一個Reader的子類(裝飾者模式)

韓順平io聽課筆記

13.處理流設計模式;消除不同流之間的實作差異;修飾器設計模式;

性能提高:增加緩沖,提高輸入輸出效率

操作便捷:一次性輸入輸出大批量資料

14.BufferedReader;一個read方法,用對象的動态綁定機制,綁定到對象;字元流,處理文本檔案;關閉處理流時,隻需要關閉外層流即可,底層被包裝(類的繼承關系)的節點流自動關閉;readLine()

15.BufferedWriter的使用;newLine()插入一個和系統相關的換行;以追加方式寫入,true加在節點流上append,處理流沒有相應的構造器

16.Buffered拷貝;字元流,不要操作二進制檔案,圖檔,聲音,視訊,doc,pdf等等

17.Buffered位元組處理流InputStream/OutputStream;

韓順平io聽課筆記

18.練習:位元組處理流拷貝圖檔/音樂,可以完成二進制檔案拷貝

19.對象處理流,ObjectInputStream,ObjectOutputStream;儲存值的同時儲存資料類型(序列化),如儲存int 100;在恢複資料時,恢複資料的值和資料類型(反序列化);實作Serializable(标記接口,沒有方法),或Externalizable的類才可以序列化

20.用ObjectOutputStream序列化一個Dog對象,儲存到data.dat檔案中(序列化後,儲存的檔案格式不是純文字的,而是預設的);包裝類Integer實作了Serializable;

21.ObjectInputStream,反序列化;

反序列化順序要和序列化順序一緻

反序列化時,類需要在ObjectInputStream中定義

要使用反序列化類的方法,需要向下轉型,并将類的定義拷貝到可以引用的位置

22.對象處理流的使用細節

韓順平io聽課筆記

private static final long seriaVersionUID = 1L; // 将修改視為版本更新而不是一個新的類,提高相容性

序列化有可繼承性

23.标準輸入輸出流,System.in/out,鍵盤/顯示器;

編譯類型:InputStream(标準輸入)/PrintStream(标準輸出);

運作類型:BufferedInputStream/PrintStream;

24.轉換(作用)流——InputStreamReader和OutputStreamWriter;把一種位元組流轉換為字元流,解決亂碼問題;預設情況下,讀取檔案按照UTF-8編碼;ANSI(國标碼)編碼,根據系統不同而不同,中國是GBK;

25.InputStreamReader,

構造器InputStreamReader(InputStream,Charset),指定處理的編碼方式;

utf-8,gbk,gb2312,ISO8859-1等;

練習:将位元組流FileInputStream包裝成(轉換成)字元流InputStreamReader,對檔案進行讀取(按照utf-8/gbk格式),進而再包裝成BufferedReader

26.OutputStreamWriter;練習:将位元組流FileOutputStream包裝成(轉換成)字元流OutputStreamReader,對檔案進行寫入(按照utf-8/gbk格式)

27.列印流-PrintStream(位元組流)和PrintWriter(字元流);列印流隻有輸出流,沒有輸入流;

28.PrintWriter(字元流);根據需求改變列印位置,構造器傳不同的Writer;一定要有close方法(flush+關閉流)

29.配置檔案引出Properties類;自己讀取一個.properties檔案中的資料,非常麻煩——>Properties類

30.Properties讀檔案;.properties配置檔案格式要一緻 鍵=值 ;Properties常用方法;Properties練習

31.Properties修改檔案;setProperty()檔案沒有key則建立,有則修改value;

32.練習題三道

33.總結