21.1 位元組流與字元流
位元組流:按基本元素位元組讀寫的流
抽象基類:InputStream,OutputStream
字元流:與編碼表結合,按字元讀寫的流
抽象基類:Reader,Writer
21.2 FileWriter
繼承關系:Writer-OutputStream-FileWriter
FileWriter fw = new FileWriter("x:/xx/xx");
檔案不存在時自動建立,檔案存在時覆寫原檔案
21.3 換行和續寫
換行/r(windows) /n(Unix)
建議調用System.getProperty("LINE_SEPRATER");
write方法覆寫原資料,續寫時設定追加參數為true。
FileWriter fw = new FileWriter("x:/xx/xx", true);
21.4 IO異常處理
為了友善異常處理,在catch和finally中調用,在try語句塊外聲明
FileWriter fw = null;
try{
//code
}catch(IOException e){
//code
}finally{
if(fw != null)
fw.close();
}
21.5 FileReader讀取方法
1.read();讀取一個字元,結束時傳回-1
2.
char[] buf = new char[3];
int num = fr.read(buf);
讀取字元數組
21.6 緩沖區讀寫
FileWriter fw = new FileWriter("xxx.txt");
BufferedWriter bfw = new BufferedWriter(fw);
bufw.write("abc");
bufw.close();
//緩沖區關閉時,其對應的流也關閉
26.7 裝飾設計模式
BufferedReader & BufferedWriter其實是一種裝飾模式。
在Reader與Writer的基礎上對其所具備的功能進行強化
BufferedReader br = new BufferedReader (Reader);
裝飾與繼承的差別:
隻是為了增強或提高效率進行繼承,會使內建體系越發臃腫、複雜。
裝飾使用更為靈活。
同時裝飾與被裝飾類之間不具備抽象關系。
26.8 LineNumberReader
getLineNumber();
setLineNumber();
26.9 操作檔案
FileInputStream & FileOutputStream操作位元組流,不受檔案格式限制。
其可以使用緩沖類 BufferedInputStream & BufferedOutputStream