字節流和字符流的應用
FileWriter
1,創建一個FileWrite對象,該對象一被初始化就必須要明確被操作的文件.而且該文件會被創建到指定的目錄下.如果該目錄下已有同名文件,將被覆蓋.其實該步就是在明確數據要存放的目的地.
FileWriterfw = new FileWriter(“Demo.txt”);
2,調用write方法,將字符串寫入到流中.
fw.write(“abcd”);
3,刷新流對象中的緩衝中的數據,將數據刷到目的地中.
fw.flush();
fw.close();//關閉資源,但是關閉之前會刷新一次內部的緩衝中的數據,將數據刷到目的地中.FileReader
讀取方法一(通過字符進行讀取)
1,創建一個文件讀取流對象,和指定名稱的文件相關聯.要保證該文件是已經存在的,如果不存在,會發生異常FileNotFoundException.
FileReaderfr = new FileReader(“demo.txt”);
2,調用讀取流對象的read方法.
read():一次讀一個字符,而且會自動往下讀.
讀取方法二(通過字符數組進行讀取)
定義一個字符數組,用於存儲讀到的字符.
該read(char[] )返回的是讀到字符個數.字節流FileInputStream和FileOutputStream的應用
1.讀取文件
創建FileInputStream對象, 指定一個文件. 文件必須存在, 不存在則會拋出FileNotFoundException
使用read()方法可以從文件中讀取一個字節. 如果讀取到文件末尾會讀到-1
讀取結束後需要釋放資源, 調用close()方法關閉輸入流
2.寫出文件
創建FileOutputStream對象, 指定一個文件. 文件不存在會創建新文件, 存在則清空原內容. 如果需要追加, 在構造函數中傳入true.
使用write()方法可以向文件寫出一個字節.
寫出結束後同樣需要調用close()
3.拷貝文件
可以從文件中逐個字節讀取, 逐個字節寫出, 但這樣做效率非常低
我們可以定義一個數組作爲緩衝區, 一次讀取多個字節裝入數組, 然後再一次性把數組中的字節寫出