欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JAVA中的OutputStreamWriter流解析

 更新時間:2023年10月16日 09:34:11   作者:咕嚕是個大胖子  
這篇文章主要介紹了JAVA中的OutputStreamWriter流解析,OutputStreamWriter提供了一種方便的方式將字符數據寫入到輸出流中,并進行字符編碼轉換,它是Java中處理字符流和字節(jié)流之間轉換的重要工具之一,需要的朋友可以參考下

一、OutputStreamWriter流

API說明:OutputStreamWriter是從字符流到字節(jié)流的橋接:使用指定的字符集將寫入其中的字符編碼為字節(jié)。它使用的字符集可以通過名稱指定,也可以明確指定,或者可以接受平臺的默認字符集。 每次調用write()方法都會導致在給定字符上調用編碼轉換器。生成的字節(jié)在寫入底層輸出流之前在緩沖區(qū)中累積??梢灾付ù司彌_區(qū)的大小,但默認情況下,它足夠大,可用于大多數用途。請注意,傳遞給write()方法的字符不會被緩沖。 為了獲得最高效率,請考慮在BufferedWriter中包裝OutputStreamWriter,以避免頻繁的轉換器調用

1)OutputStreamWriter是從字符流到字節(jié)流的橋接怎么理解?

1、字符的輸出需要通過字符流來操作,但是本質最后還是通過字節(jié)流輸出到計算機上進行存儲的

2、 因此OutputStreamWriter流的作用就是利用字節(jié)流作為底層輸出流然后構建字符輸出流,字符輸出流輸出字符到流中,然后通過指定的字符集把流中的字符編碼成字節(jié)輸出到字節(jié)流中,其作用就是一個橋梁,使得雙方鏈接起來

2)使用的字符集可以通過名稱指定,也可以明確指定,或者可以接受平臺的默認字符集怎么理解?

OutputStreamWriter流中的構造方法可以指定字符集,或者不設置取默認值

3)每次調用write()方法都會導致在給定字符上調用編碼轉換器。生成的字節(jié)在寫入底層輸出流之前在緩沖區(qū)中累積怎么理解

OutputStreamWriter中存在一個字節(jié)緩沖區(qū),用于存儲每次輸出的字符編碼后的字節(jié),然后待字符輸出流輸出完畢一次性的將存儲的字節(jié)全部輸出給底層的字節(jié)輸出流

4)傳遞給write()方法的字符不會被緩沖怎么理解?

沒有理解清楚,因為write()方法會傳遞字符作為方法實參,若該字符不緩沖,那緩沖區(qū)的字節(jié)從何而來~~~~~

5)考慮在BufferedWriter中包裝OutputStreamWriter,以避免頻繁的轉換器調用?

1、可以通過OutputStreamWriter對象來構建BufferedWriter對象,以提高字符輸出的效率,

2、OutputStreamWriter中頻繁的調用了字符編碼器進行轉換,而這樣的轉換過程是很耗資源的?

public class OutputStreamWriter extends Writer{}

二、OutputStreamWriter流構造函數

1)利用輸出流構建默認字符編碼的OutputStreamWriter流:本質是初始化StreamEncoder對象

      private final StreamEncoder se;
 
      public OutputStreamWriter(OutputStream out) {
        super(out);
        try {
            se = StreamEncoder.forOutputStreamWriter(out, this, (String)null);
        } catch (UnsupportedEncodingException e) {
            throw new Error(e);
        }
    }

2)通過指定的字符編碼構建OutputStreamWriter流:本質是初始化StreamEncoder對象但是指定了字符編碼

    public OutputStreamWriter(OutputStream out, String charsetName)
        throws UnsupportedEncodingException
    {
        super(out);
        if (charsetName == null)
            throw new NullPointerException("charsetName");
        se = StreamEncoder.forOutputStreamWriter(out, this, charsetName);
    }

3)FileWriter類構造調用OutputStreamWriter類構造方法,而OutputStreamWriter類構造方法本質是在初始化StreamEncoder對象,因此最終的實現要去StreamEncoder源碼進行查看

三、OutputStreamWriter流API

1)寫入一個字符到流中:本質是調用StreamEncoder的write(int c)方法

    public void write(int c) throws IOException {
        se.write(c);
    }

2)寫入字符數組的一部分到流中:本質上調用StreamEncoder的write(char cbuf[], int off, int len)方法

    public void write(char cbuf[], int off, int len) throws IOException {
        se.write(cbuf, off, len);
    }

3)寫入字符串的一部分到流中:本質是調用StreamEncoder的write(String str, int off, int len)方法

    public void write(String str, int off, int len) throws IOException {
        se.write(str, off, len);
    }

4)刷新流中的數據:本質是調用StreamEncoder的flush()方法

  public void flush() throws IOException {
        se.flush();
    }

5)關閉流但是先刷新流:即該流必須要先調用flush方法然后再調用close方法

    public void close() throws IOException {
        se.close();
    }

6)OutputStreamWriter流的API和構造方法本質全部是調用StreamEncoder流的方法,因此需要了解OutputStreamWriter流的具體實現需要查看StreamEncoder流源碼才可知

到此這篇關于JAVA中的OutputStreamWriter流解析的文章就介紹到這了,更多相關OutputStreamWriter流解析內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java如何基于反射機制獲取不同的類

    Java如何基于反射機制獲取不同的類

    這篇文章主要介紹了Java如何基于反射機制獲取不同的類,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Mybatis-plus?代碼生成器?AutoGenerator?的簡介和使用詳解

    Mybatis-plus?代碼生成器?AutoGenerator?的簡介和使用詳解

    AutoGenerator是MyBatis-Plus的代碼生成器,通過AutoGenerator可以快速生成?Entity、Mapper、Mapper XML、Service、Controller等各個模塊的代碼,極大的提升了開發(fā)效率,這篇文章主要介紹了Mybatis-plus代碼生成器AutoGenerator的簡介和使用,需要的朋友可以參考下
    2023-05-05
  • Java 加密解密基礎分類及模式歸納整理

    Java 加密解密基礎分類及模式歸納整理

    這篇文章主要介紹了Java加密解密基礎分類方法匯總的相關資料,需要的朋友可以參考下
    2017-04-04
  • Java/Android引用類型及其使用全面分析

    Java/Android引用類型及其使用全面分析

    下面小編就為大家?guī)硪黄狫ava/Android引用類型及其使用全面分析。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • Mybatis-Plus select不列出全部字段的方法

    Mybatis-Plus select不列出全部字段的方法

    這篇文章主要介紹了Mybatis-Plus select不列出全部字段的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • springboot日志切面通用類實例詳解

    springboot日志切面通用類實例詳解

    這篇文章主要介紹了springboot日志切面通用類,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • java結合WebSphere MQ實現接收隊列文件功能

    java結合WebSphere MQ實現接收隊列文件功能

    WebSphereMQ,也稱MQSeries,以一致的、可靠的和易于管理的方式來連接應用程序,并為跨部門、企業(yè)范圍的集成提供了可靠的基礎。通過為重要的消息和事務提供可靠的、一次且僅一次的傳遞,MQ可以處理復雜的通信協(xié)議,并動態(tài)地將消息傳遞工作負載分配給可用的資源。
    2015-10-10
  • Java利用POI讀取、寫入Excel的方法指南

    Java利用POI讀取、寫入Excel的方法指南

    這篇文章主要給大家介紹了關于Java利用POI讀取、寫入Excel的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-03-03
  • Javaweb項目啟動Tomcat常見的報錯解決方案

    Javaweb項目啟動Tomcat常見的報錯解決方案

    Java Web項目啟動Tomcat時可能會遇到各種錯誤,本文就來介紹一下Javaweb項目啟動Tomcat常見的報錯解決方案,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Spring整合websocket整合應用示例(下)

    Spring整合websocket整合應用示例(下)

    這篇文章主要介紹了Spring整合websocket整合應用示例(下)的相關資料,需要的朋友可以參考下
    2016-04-04

最新評論