一、位元組流與字元流的差別
位元組流和字元流使用是非常相似的,那麼除了操作代碼的不同之外,還有哪些不同呢?
位元組流在操作的時候本身是不會用到緩沖區(記憶體)的,是與檔案本身直接操作的,而字元流在操作的時候是使用到緩沖區的
位元組流在操作檔案時,即使不關閉資源(close方法),檔案也能輸出,但是如果字元流不使用close方法的話,則不會輸出任何内容,說明字元流用的是緩沖區,并且可以使用flush方法強制進行重新整理緩沖區,這時才能在不close的情況下輸出内容
那開發中究竟用位元組流好還是用字元流好呢?
在所有的硬碟上儲存檔案或進行傳輸的時候都是以位元組的方法進行的,包括圖檔也是按位元組完成,而字元是隻有在記憶體中才會形成的,是以使用位元組的操作是最多的。
如果要java程式實作一個拷貝功能,應該選用位元組流進行操作(可能拷貝的是圖檔),并且采用邊讀邊寫的方式(節省記憶體)。
二、位元組流與字元流的轉換
雖然Java支援位元組流和字元流,但有時需要在位元組流和字元流兩者之間轉換。InputStreamReader和OutputStreamWriter,這兩個為類是位元組流和字元流之間互相轉換的類。
// 建立位元組輸入流 位元組流--字元流--緩存字元流
InputStream fis = new FileInputStream("D:/demo/test.txt");
//位元組輸入流轉化為字元輸入流
InputStreamReader is = new InputStreamReader(fis);
//字元輸入流轉化為緩存字元輸入流
BufferedReader bis = new BufferedReader(is);
簡單的寫是:BufferedReader bis = new BufferedReader (new InputStreamReader(new FileInputStream("D:/demo/test.txt"));
流的關閉順序
一般情況下是:先打開的後關閉,後打開的先關閉。