2.2 字元流方式讀取寫入檔案
在“1.2.2”中提到,字元流主要由Reader和Writer作為基類。我們将使用這兩個類的派生類InputStreamReader和OutputStreamWriter實作檔案資料的讀寫。字元流與位元組流的關系如圖所示。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcVnRXFGMsRUTxkzRhZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TM5EjMzkTNxITOwUDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
2.2.1 檔案資料的寫入
使用OutputStreamWriter類可以實作字元流方式寫入檔案。該類是字元流通向位元組流的橋梁。
2.2.1.1 建立檔案流
OutputStreamWriter類是通過FileOutputStream類建立的。
FileOutputStream fos = new FileOutputStream(filePath);
OutputStreamWriter osw = new OutputStreamWriter(fos);
2.2.1.2 寫入檔案流
通過OutputStreamWriter類的write()方法實作檔案流的寫入。
osw.write(content);
其中,content是要寫入檔案的資料,其類型是String。在“1.2.2”中提到,OutputStreamWriter類是字元流,是以,write()的參數是String,可以直接将其寫入到流中,無需将其再變為byte[]。
2.2.1.3 關閉檔案流
如果不再使用字元流,需要将其關閉。而在使用字元流時也用到了位元組流,是以也需要将位元組流關閉。關閉流的順序與建立流的順序相反,要先關閉字元流,再關閉位元組流。
osw.close();
fos.close();
2.2.2 檔案資料的讀取
使用InputStreamReader類可以實作字元流方式讀取檔案。該類的使用與OutputStreamWrite類相似。
2.2.2.1 建立檔案流
InputStreamWriter類是通過FileInputStream類建立的。
FileInputStream fis = new FileInputStream(filePath);
InputStreamReader isr = new InputStreamReader(fis);
2.2.2.2 讀取檔案流
通過InputStreamReader類的方法read()讀取檔案流。
isr.read(content);
其中,content的類型是char[],用于儲存讀取到的檔案資料。
2.2.2.3 關閉檔案流
最後關閉字元流和位元組流。
isr.close();
fis.close();