<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] # 簡介 ![](https://img.kancloud.cn/89/da/89da2161dab504176189aa5363966ae9_1269x582.png) # OutputStreamWriter類 **OutputStreamWriter 是字符流通向字節流的橋梁**: 可使用指定的字符編碼表,將要寫入流中的字符編碼成字節。它的作用的就是,將字符串按照指定的編碼表轉成字節,在使用字節流將這些字節寫出去。 ![](https://box.kancloud.cn/1739cb07d0b2ecd6ffdd9eb8d1a53611_697x139.png) ~~~ /創建與文件關聯的字節輸出流對象 FileOutputStream fos = new FileOutputStream("c:\\cn8.txt"); //創建可以把字符轉成字節的轉換流對象,并指定編碼 OutputStreamWriter osw = new OutputStreamWriter(fos,"utf-8"); //調用轉換流,把文字寫出去,其實是寫到轉換流的緩沖區中 osw.write("你好");//寫入緩沖區。 osw.close(); ~~~ OutputStreamWriter流對象,它到底如何把字符轉成字節輸出的呢? 其實在OutputStreamWriter流中維護自己的緩沖區,當我們調用OutputStreamWriter對象的write方法時,會拿著字符到指定的碼表中進行查詢,把查到的字符編碼值轉成字節數存放到OutputStreamWriter緩沖區中。然后再調用刷新功能,或者關閉流,或者緩沖區存滿后會把緩沖區中的字節數據使用字節流寫到指定的文件中。 # InputStreamReader類 **InputStreamReader 是字節流通向字符流的橋梁**: 它使用指定的字符編碼表讀取字節并將其解碼為字符。它使用的字符集可以由名稱指定或顯式給定,或者可以接受平臺默認的字符集。 ![](https://box.kancloud.cn/b62e6ce9f6c92c8ca3977b0f91ccf43a_677x138.png) ~~~ public static void readCN() throws IOException{ //創建讀取文件的字節流對象 InputStream in = new FileInputStream("c:\\cn8.txt"); //創建轉換流對象 //InputStreamReader isr = new InputStreamReader(in);這樣創建對象,會用本地默認碼表讀取,將會發生錯誤解碼的錯誤 InputStreamReader isr = new InputStreamReader(in,"utf-8"); //使用轉換流去讀字節流中的字節 int ch = 0; while((ch = isr.read())!=-1){ System.out.println((char)ch); } //關閉流 isr.close(); } ~~~ 注意:在讀取指定的編碼的文件時,一定要指定編碼格式,否則就會發生解碼錯誤,而發生亂碼現象。 # 轉換流和子類區別 發現有如下繼承關系: ~~~ OutputStreamWriter: |--FileWriter: InputStreamReader: |--FileReader; ~~~ 父類和子類的功能有什么區別呢? OutputStreamWriter和InputStreamReader是字符和字節的橋梁:也可以稱之為字符轉換流。字符轉換流原理:字節流+編碼表。 FileWriter和FileReader:作為子類,僅作為操作字符文件的便捷類存在。當操作的字符文件,使用的是默認編碼表時可以不用父類,而直接用子類就完成操作了,簡化了代碼。 ~~~ InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"));//默認字符集。 InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"),"GBK");//指定GBK字符集。 FileReader fr = new FileReader("a.txt"); ~~~ 這三句代碼的功能是一樣的,其中第三句最為便捷。 注意:一旦要指定其他編碼時,絕對不能用子類,必須使用字符轉換流。什么時候用子類呢? 條件: 1、操作的是文件。2、使用默認編碼。 總結: 字節--->字符 : 看不懂的--->看的懂的。 需要讀。輸入流。 InputStreamReader 字符--->字節 : 看的懂的--->看不懂的。 需要寫。輸出流。 OutputStreamWriter
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看