------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a>、期待與您交流! ----------
IO流輸入與輸出:
按流向分爲:輸入流、輸出流
按操作數據分爲:字節流、字符流
字節流的抽象基類:
InputStream、OutputStream、BufferedInputStream、BufferedOutputStream
——FileInputStream
字符流的抽象基類:
Reader、 Writer、BufferedReader、BufferedWriter
——FileReader
打印流:
字節打印流:printStream
構造函數可接收的參數類型:
file對象、字符串路徑String、字節輸出流OutputStream
字符打印流:printWriter
構造函數可接收的參數類型:
File對象、字符串路徑String、
字節輸出流OutputStream、字符輸出流Writer
序列流:SequenceInputStream
對已有文件進行續寫:
FileWriter fw=new FileWriter("test.txt",true);傳遞一個true參數,代表不覆蓋已有的文件內容,將它加到已有文件的末尾。
字符流的緩衝區:
對應類:BufferedWriter、BufferedReader 需結合流才能使用。
它的出現是爲了提高流的操作效率,所以在創建緩衝區前必須要先有流對象。
只要用到緩衝區就要記得刷新。bufferWriter.flush();
該緩衝區提供了一個跨平臺的換行方法bufferWriter.newLine();
該緩衝區提供了一個讀取一行的方法bufferReader.readLine();
裝飾設計模式:
當想要對已有的對象進行功能增強時,可以定義類,將已在對象傳入,基於原來的功能,提供增強功能。則自定義的類就稱爲裝飾類。
裝飾類通常會通過構造方法接收被裝飾類的對象,並基於被裝飾的對象的功能提供更強的功能。
Person 類,
SuperPerson 類中寫:
private Person p;
SuperPerson(Person p){this.p=p;}
MyReader專門用於讀取數據的類。
——MyTextReader
——MyBufferReader(MyReader r){}
——MyMediaReader
——MyBufferReader(MyReader r){}
——MyDataReader
——MyBufferReader(MyReader r){}
——MyBufferReader
——MyBufferReader(MyReader r){}
Class MyBufferReader extends MyReader{
private MyReader r;
MyBufferReader(MyReader r){}
}
裝飾模式比繼承靈活,降低了類與類之間的關係,裝飾類和被裝飾類都所屬於一個體系。
流操作的基本規律:
1、明確源和目的
源:輸入流——InputStream、Reader
目的:輸出流——OutputStream、Writer
2、操作的數據是否是純文本
是:字符流
不是:字節流
轉換流是字符和字節之間的橋樑,涉及到字符編碼轉換時需用到,InputStreamReader
File:
1、創建:
Boolean createNewFile():在指定位置創建文件,如果文件已存在則不創建,返回false.
Boolean mkdir();創建文件夾
Boolean mkdirs();創建多級目錄的文件夾
2、刪除:boolean delete();刪除失敗返回false;
Void deleteOnExit();在程序退出時刪除指定文件
3、判斷:canExecute()測試文件是否可執行
在判斷文件對象是否是文件或是目錄時必須要先判斷該文件對象封裝的內容是否存在,通過exists判斷
isFile();是否是文件
isDirectory();是否是目錄
isHidden();是否是隱藏文件
4、獲取信息:
getName();getpath();getParent();getAbsolutePath();
getCanonicalPath();獲得規範路徑
lastMotified();最後修改的時間
遞歸:
遞歸應注意的條件:
1、限定條件
2、要注意遞歸的次數,避免內存溢出