Java字節流轉換字符流

一、字節流轉換字符流

有時需要將字節流轉換爲字符流,InputStreamReader和OutputStreamWriter是爲實現這種轉換而設計的。
InputStreamReader構造方法如下:

  • InputStreamReader(InputStream in):將字節流in轉換爲字符流對象,字符流使用默認字符集。
  • InputStreamReader(InputStream in, String charsetName):將字節流in轉換爲字符流對象, charsetName指定字符流的字符集,字符集主要有:US-ASCII、ISO-8859-1、UTF-8和UTF-16。 如果指定的字符集不支持會拋出UnsupportedEncodingException異常。

OutputStreamWriter構造方法如下:

  • OutputStreamWriter(OutputStream out):將字節流out轉換爲字符流對象,字符流使用默認字符集。
  • OutputStreamWriter(OutputStream out,String charsetName):將字節流out轉換爲字符流對象, charsetName指定字符流的字符集,如果指定的字符集不支持會拋出 UnsupportedEncodingException異常。

文件複製的案例改造成緩衝流實現,代碼如下:

import java.io.*;

public class FileCopyWithBuffer {
    public static void main(String[] args) {
//        創建字節文件輸入流對象
        try(FileInputStream fis = new FileInputStream("/Users/caizhengjie/Desktop/qq/123.txt");
//            創建轉換流對象
            InputStreamReader isr = new InputStreamReader(fis);
//            創建字符緩衝流
            BufferedReader bis = new BufferedReader(isr);
//            創建字節文件輸出流對象
            FileOutputStream fos = new FileOutputStream("/Users/caizhengjie/Desktop/qq/asd/1234.txt");
//            創建轉換流對象
            OutputStreamWriter osw = new OutputStreamWriter(fos);
//            創建字符緩衝輸出流對象
            BufferedWriter bos = new BufferedWriter(osw);
        ){
//            首先讀取一行文本
            String line = bis.readLine();
            while (line!=null){
//                開始寫入數據
                bos.write(line);
//                寫一個換行符
                bos.newLine();
//                再讀取一行文本
                line = bis.readLine();
            }
            System.out.println("複製完成");

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述流從一個 文件字節流,構建轉換流,再構建緩衝流,這個過程比較麻煩,在I/O流開發過程中經常遇到這種流 的“鏈條”。

以上內容僅供參考學習,如有侵權請聯繫我刪除!
如果這篇文章對您有幫助,左下角的大拇指就是對博主最大的鼓勵。
您的鼓勵就是博主最大的動力!

發佈了59 篇原創文章 · 獲贊 7 · 訪問量 2928
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章