更新時間:2023年01月04日10時46分 來源:傳智教育 瀏覽次數:
在程序開發中,有時會遇到字節流和字符流之間需要進行轉換的可能。在java.io包中提供了兩個類可以將字節流轉換為字符流,它們分別是InputStreamReader和OutputStreamWriter。
OutputStreamWriter是Writer的子類,能夠將一個字節輸出流轉換成字符輸出流,方便直接寫入字符,而InputStreamReader是Reader的子類,能夠將一個字節輸入流轉換成字符輸入流,方便直接讀取字符。下面通過案例學習如何將字節流轉換為字符流,為了提高讀/寫效率,通過字符緩沖流實現轉換的操作,如文件5-9所示。
文件5-9 Example09.java
package com.itheima.example; import java.io.*; public class Example09 { public static void main(String[] args) throws Exception { //創建字節輸入流 FileInputStream input=new FileInputStream("read.txt"); //將字節輸入流轉換成字符輸入流 InputStreamReader streamReader=new InputStreamReader(input); //賦予字符輸入流對象緩沖區 BufferedReader bufferReader=new BufferedReader(streamReader); //創建字節輸出流 FileOutputStream output=new FileOutputStream("dest2.txt") //將字節輸出流轉換成字符輸出流 OutputStreamWriter streamWriter=new OutputStreamWriter(output); //賦予字符輸出流對象緩沖區 BufferedWriter bufferWriter=new BufferedWriter(streamWriter); String line=null; //判斷是否讀到文件末尾 while ((line=bufferReader.readLine()) !=null) { bufferWriter.write(line); //輸出讀取到的文件 } bufferReader.close(); bufferWriter.close(); } }
程序運行結束后,按F5鍵刷新chapter05項目后打開dest2.txt文件,執行結果如圖5-5所示。
圖5-15 dest2.txt
在文件5-9中,實現了字節流和字符流之間的轉換,將字節流轉換為字符流,從而實現直接對字符的讀/寫。需要注意的是,在使用轉換流時,只能針對操作文本文件的字節流進行轉換,如果字節流操作的是圖片或者音頻,此時轉換為字符流就會造成數據丟失。