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的子類(裝飾者模式)

13.處理流設計模式;消除不同流之間的實作差異;修飾器設計模式;
性能提高:增加緩沖,提高輸入輸出效率
操作便捷:一次性輸入輸出大批量資料
14.BufferedReader;一個read方法,用對象的動态綁定機制,綁定到對象;字元流,處理文本檔案;關閉處理流時,隻需要關閉外層流即可,底層被包裝(類的繼承關系)的節點流自動關閉;readLine()
15.BufferedWriter的使用;newLine()插入一個和系統相關的換行;以追加方式寫入,true加在節點流上append,處理流沒有相應的構造器
16.Buffered拷貝;字元流,不要操作二進制檔案,圖檔,聲音,視訊,doc,pdf等等
17.Buffered位元組處理流InputStream/OutputStream;
18.練習:位元組處理流拷貝圖檔/音樂,可以完成二進制檔案拷貝
19.對象處理流,ObjectInputStream,ObjectOutputStream;儲存值的同時儲存資料類型(序列化),如儲存int 100;在恢複資料時,恢複資料的值和資料類型(反序列化);實作Serializable(标記接口,沒有方法),或Externalizable的類才可以序列化
20.用ObjectOutputStream序列化一個Dog對象,儲存到data.dat檔案中(序列化後,儲存的檔案格式不是純文字的,而是預設的);包裝類Integer實作了Serializable;
21.ObjectInputStream,反序列化;
反序列化順序要和序列化順序一緻
反序列化時,類需要在ObjectInputStream中定義
要使用反序列化類的方法,需要向下轉型,并将類的定義拷貝到可以引用的位置
22.對象處理流的使用細節
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.總結