1. 程式人生 > 其它 >java--IO--InputStreamReader和OutputStreamWriter轉換流

java--IO--InputStreamReader和OutputStreamWriter轉換流

  1. 轉換流要接據的問題:
    1. 當我們的檔案是UTF-8的編碼方式時,可以正常的讀取,

    2. 將檔案的編碼方式改變一下重新讀,亂碼問題:

      1. 轉換流是可以將位元組流轉換為字元流,同時 位元組流還可以指定編碼方式,用來解決亂碼的問題

  2. 轉換流InputStreamReader和OutputStreamWriter的介紹

    1. InputStreamReader:輸入位元組流轉換為輸入字元流:

      1. package com.model.io.reader.inputstreamReader;
        
        import java.io.*;
        
        /**
         * @Description:測試類
         * @Author: 張紫韓
         * @Crete 2021/6/19 11:31
         * 解決中文亂碼問題:我們需要指定編碼方式,且只有位元組流可以指定編碼方式,
         * 我們需要將位元組裡流變為字元流,同時指定編碼方式,以此來解決中文亂碼問題
         *
         * 將流進行轉換同時,指定編碼方式讀取檔案
         
        */ public class InputStreamReaderDemo01 { public static void main(String[] args) throws IOException { String filePath="D:\\qq\\IDEA\\IdeaProjects\\java_mianshi_test\\mianshi_io\\src\\main\\resources\\File\\OutputStreamWriterDemo01.txt"; String charSet="utf-8"; //將檔案位元組輸入流轉換為字元輸入流同時指定了編碼方式,同時將字元輸入流進行包裝
        BufferedReader bufferedReader = new BufferedReader( new InputStreamReader( new FileInputStream(filePath), charSet)); System.out.println(bufferedReader.readLine()); bufferedReader.close(); System.out.println("按照指定的編碼方式"+charSet+"讀取檔案完成"); } }
    2. OutputStreamWriter:輸出位元組流轉換為輸出字元流 

      1. package com.model.io.writer.outputstreamwriter;
        
        import java.io.*;
        
        /**
         * @Description:測試類
         * @Author: 張紫韓
         * @Crete 2021/6/19 11:43
         *
         * 將位元組輸出流轉換為字元輸出流,同時指定編碼方式,這樣我們儲存的檔案就是以這中編碼方式儲存了
         *
         * 將流進行轉換,同時指定編碼方式儲存檔案
         */
        public class OutputStreamWriterDemo01 {
            public static void main(String[] args) throws IOException {
        
                String filePath="D:\\qq\\IDEA\\IdeaProjects\\java_mianshi_test\\mianshi_io\\src\\main\\resources\\File\\OutputStreamWriterDemo01.txt";
        
                String charSet="utf-8";
                BufferedWriter bufferedWriter = new BufferedWriter(  //包裝流 (位元組輸出流的包裝流)
                        new OutputStreamWriter(                      //轉換流(字元輸出流)
                                new FileOutputStream(filePath,true), charSet)); //位元組輸出流
        
                bufferedWriter.write("張紫韓");
                bufferedWriter.newLine();
                bufferedWriter.close();
                System.out.println("按照指定的編碼方式"+charSet+"儲存檔案完成");
            }
        }