更新時(shí)間:2022-06-15 來源:黑馬程序員 瀏覽量:
I/O流可分為字節(jié)流和字符流,有時(shí)字節(jié)流和字符流之間也需要進(jìn)行轉(zhuǎn)換。在JDK中,提供了兩個(gè)類用于實(shí)現(xiàn)將字節(jié)流轉(zhuǎn)換為字符流,它們分別是InputStreamReader和OutputStream Writer。InputStreamReader 是Reader的子類,它可以將一個(gè)字節(jié)輸入流轉(zhuǎn)換成字符輸入流,方便直接讀取字符。OutputStreamWriter是Writer的子類,它可以將一個(gè)字節(jié)輸出流轉(zhuǎn)換成字符輸出流,方便直接寫入字符。通過轉(zhuǎn)換流進(jìn)行數(shù)據(jù)讀寫的過程如圖。
接下來通過一個(gè)案例來學(xué)習(xí)如何將字節(jié)流轉(zhuǎn)為字符流,為了提高讀寫效率,可以通過BufferedReader和BufferedWriter來實(shí)現(xiàn)轉(zhuǎn)換工作,具體代碼如下。
Examplel1.java
import java.io.*; public class Examplell { public static void main (String[] args) throws Exception { //1.創(chuàng)建字節(jié)輸人流對(duì)象,獲取源文件 FileInputStream in =new FileInputStream("reader.txt"); //將字節(jié)輸入流對(duì)象轉(zhuǎn)換成字符輸入流對(duì)象 InputStreamReader isr=new InputStreamReader (in); //創(chuàng)建字符輸入緩沖流對(duì)象 BufferedReader br =new BufferedReader (isr); //2.創(chuàng)建字節(jié)輸出流對(duì)象,指定目標(biāo)文件 FileOutputStream out =new FileOutputStream("writer.txt"); //將字節(jié)輸出流對(duì)象轉(zhuǎn)換成字符輸出流對(duì)象 OutputStreamWriter osw =new OutputStreamWriter (out); //創(chuàng)建字符輸出緩沖流對(duì)象 BufferedWriter bw=new BufferedWriter(osw); //定義一個(gè)字符串變量 String line =null; //通過循環(huán)判斷是否讀到文件末尾 while ((line =br.readLine()) !=null) { //輸出讀取到的文件 bw.write(line); bw.newLine(); } //關(guān)閉流 br.close(); bw.close(); } }
程序運(yùn)行結(jié)束后,同樣會(huì)將源文件“reader.txt“中的內(nèi)容拷員到目標(biāo)文件“writer.1xt”中,結(jié)果如圖所示。