教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

java轉(zhuǎn)換流有什么用?

更新時(shí)間:2023年01月04日10時(shí)46分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

  在程序開發(fā)中,有時(shí)會遇到字節(jié)流和字符流之間需要進(jìn)行轉(zhuǎn)換的可能。在java.io包中提供了兩個(gè)類可以將字節(jié)流轉(zhuǎn)換為字符流,它們分別是InputStreamReader和OutputStreamWriter。

  OutputStreamWriter是Writer的子類,能夠?qū)⒁粋€(gè)字節(jié)輸出流轉(zhuǎn)換成字符輸出流,方便直接寫入字符,而InputStreamReader是Reader的子類,能夠?qū)⒁粋€(gè)字節(jié)輸入流轉(zhuǎn)換成字符輸入流,方便直接讀取字符。下面通過案例學(xué)習(xí)如何將字節(jié)流轉(zhuǎn)換為字符流,為了提高讀/寫效率,通過字符緩沖流實(shí)現(xiàn)轉(zhuǎn)換的操作,如文件5-9所示。

  文件5-9 Example09.java

package com.itheima.example;
import java.io.*;
public class Example09 {
    public static void main(String[] args) throws Exception {
        //創(chuàng)建字節(jié)輸入流
        FileInputStream input=new FileInputStream("read.txt");
        //將字節(jié)輸入流轉(zhuǎn)換成字符輸入流
        InputStreamReader streamReader=new InputStreamReader(input);
        //賦予字符輸入流對象緩沖區(qū)
        BufferedReader bufferReader=new BufferedReader(streamReader);
        //創(chuàng)建字節(jié)輸出流
        FileOutputStream output=new FileOutputStream("dest2.txt")
        //將字節(jié)輸出流轉(zhuǎn)換成字符輸出流
        OutputStreamWriter streamWriter=new OutputStreamWriter(output);
        //賦予字符輸出流對象緩沖區(qū)
        BufferedWriter bufferWriter=new BufferedWriter(streamWriter);
        String line=null;
        //判斷是否讀到文件末尾
        while ((line=bufferReader.readLine()) !=null) {
            bufferWriter.write(line);        //輸出讀取到的文件
        }
        bufferReader.close();
        bufferWriter.close();
    }
}

  程序運(yùn)行結(jié)束后,按F5鍵刷新chapter05項(xiàng)目后打開dest2.txt文件,執(zhí)行結(jié)果如圖5-5所示。

dest2

  圖5-15 dest2.txt

  在文件5-9中,實(shí)現(xiàn)了字節(jié)流和字符流之間的轉(zhuǎn)換,將字節(jié)流轉(zhuǎn)換為字符流,從而實(shí)現(xiàn)直接對字符的讀/寫。需要注意的是,在使用轉(zhuǎn)換流時(shí),只能針對操作文本文件的字節(jié)流進(jìn)行轉(zhuǎn)換,如果字節(jié)流操作的是圖片或者音頻,此時(shí)轉(zhuǎn)換為字符流就會造成數(shù)據(jù)丟失。

0 分享到:
和我們在線交談!