最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java之OutputStreamWriter流案例詳解

 更新時(shí)間:2021年08月24日 09:54:37   作者:咕嚕是個(gè)大胖子  
這篇文章主要介紹了Java之OutputStreamWriter流案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

一、OutputStreamWriter流

    API說明:OutputStreamWriter是從字符流到字節(jié)流的橋接:使用指定的字符集將寫入其中的字符編碼為字節(jié)。它使用的字符集可以通過名稱指定,也可以明確指定,或者可以接受平臺的默認(rèn)字符集。

每次調(diào)用write()方法都會導(dǎo)致在給定字符上調(diào)用編碼轉(zhuǎn)換器。生成的字節(jié)在寫入底層輸出流之前在緩沖區(qū)中累積??梢灾付ù司彌_區(qū)的大小,但默認(rèn)情況下,它足夠大,可用于大多數(shù)用途。請注意,傳遞給write()方法的字符不會被緩沖。

為了獲得最高效率,請考慮在BufferedWriter中包裝OutputStreamWriter,以避免頻繁的轉(zhuǎn)換器調(diào)用

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

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

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

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

    OutputStreamWriter流中的構(gòu)造方法可以指定字符集,或者不設(shè)置取默認(rèn)值

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

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

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

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

5)考慮在BufferedWriter中包裝OutputStreamWriter,以避免頻繁的轉(zhuǎn)換器調(diào)用?

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

     2、OutputStreamWriter中頻繁的調(diào)用了字符編碼器進(jìn)行轉(zhuǎn)換,而這樣的轉(zhuǎn)換過程是很耗資源的?

public class OutputStreamWriter extends Writer{}

二、OutputStreamWriter流構(gòu)造函數(shù)

 1)利用輸出流構(gòu)建默認(rèn)字符編碼的OutputStreamWriter流:本質(zhì)是初始化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)通過指定的字符編碼構(gòu)建OutputStreamWriter流:本質(zhì)是初始化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類構(gòu)造調(diào)用OutputStreamWriter類構(gòu)造方法,而OutputStreamWriter類構(gòu)造方法本質(zhì)是在初始化StreamEncoder對象,因此最終的實(shí)現(xiàn)要去StreamEncoder源碼進(jìn)行查看

三、OutputStreamWriter流API

1)寫入一個(gè)字符到流中:本質(zhì)是調(diào)用StreamEncoder的write(int c)方法

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

2)寫入字符數(shù)組的一部分到流中:本質(zhì)上調(diào)用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)寫入字符串的一部分到流中:本質(zhì)是調(diào)用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)刷新流中的數(shù)據(jù):本質(zhì)是調(diào)用StreamEncoder的flush()方法

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

5)關(guān)閉流但是先刷新流:即該流必須要先調(diào)用flush方法然后再調(diào)用close方法

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

6)OutputStreamWriter流的API和構(gòu)造方法本質(zhì)全部是調(diào)用StreamEncoder流的方法,因此需要了解OutputStreamWriter流的具體實(shí)現(xiàn)需要查看StreamEncoder流源碼才可知

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

相關(guān)文章

  • Java中JDBC事務(wù)與JTA分布式事務(wù)總結(jié)與區(qū)別

    Java中JDBC事務(wù)與JTA分布式事務(wù)總結(jié)與區(qū)別

    Java事務(wù)的類型有三種:JDBC事務(wù)、JTA(Java Transaction API)事務(wù)、容器事務(wù),本文詳細(xì)介紹了JDBC事務(wù)與JTA分布式事務(wù),有需要的可以了解一下。
    2016-11-11
  • jpa?onetomany?使用級連表刪除被維護(hù)表數(shù)據(jù)時(shí)的坑

    jpa?onetomany?使用級連表刪除被維護(hù)表數(shù)據(jù)時(shí)的坑

    這篇文章主要介紹了jpa?onetomany?使用級連表刪除被維護(hù)表數(shù)據(jù)時(shí)的坑,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java中Integer和int的區(qū)別解讀

    Java中Integer和int的區(qū)別解讀

    這篇文章主要介紹了Java中Integer和int的區(qū)別解讀,大家都知道他可以表示一個(gè)整數(shù),而且也知道可以表示整數(shù)的還有int,只是使用Integer的次數(shù)要比int多得多,今天我們就來好好探究一下Integer與int的區(qū)別以及更深處的知識,需要的朋友可以參考下
    2023-12-12
  • Spring\SpringBoot配置連接數(shù)據(jù)庫的方法

    Spring\SpringBoot配置連接數(shù)據(jù)庫的方法

    最近在學(xué)習(xí)SpringBoot,第一步就是要配置數(shù)據(jù)庫,本文詳細(xì)的介紹了Spring\SpringBoot配置連接數(shù)據(jù)庫的方法,有需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • 詳解java中的PropertyChangeSupport與PropertyChangeListener

    詳解java中的PropertyChangeSupport與PropertyChangeListener

    這篇文章主要介紹了詳解java中的PropertyChangeSupport與PropertyChangeListener的相關(guān)資料,需要的朋友可以參考下
    2017-09-09
  • javaweb登錄驗(yàn)證碼的實(shí)現(xiàn)方法

    javaweb登錄驗(yàn)證碼的實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了javaweb登錄驗(yàn)證碼的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • springboot集成mqtt的實(shí)踐開發(fā)

    springboot集成mqtt的實(shí)踐開發(fā)

    本篇文章主要介紹了springboot集成mqtt的實(shí)踐開發(fā),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • swagger2和knife4j的詳細(xì)使用教程(入門級)

    swagger2和knife4j的詳細(xì)使用教程(入門級)

    最近項(xiàng)目中用到了Swagger2和knife4j作為接口文檔,所以下面這篇文章主要給大家介紹了關(guān)于swagger2和knife4j的詳細(xì)使用教程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 使用java采集京東商城區(qū)劃數(shù)據(jù)示例

    使用java采集京東商城區(qū)劃數(shù)據(jù)示例

    這篇文章主要介紹了java采集京東的全國區(qū)劃數(shù)據(jù)示例,保存成json形式,如想轉(zhuǎn)換到數(shù)據(jù)庫只需反序列化為對象保存到數(shù)據(jù)庫即可
    2014-03-03
  • elasticsearch源碼分析index?action實(shí)現(xiàn)方式

    elasticsearch源碼分析index?action實(shí)現(xiàn)方式

    這篇文章主要為大家介紹了elasticsearch源碼分析index?action實(shí)現(xiàn)方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04

最新評論

历史| 乌鲁木齐县| 南宫市| 阜宁县| 库车县| 镇赉县| 堆龙德庆县| 桦川县| 伊金霍洛旗| 石城县| 翼城县| 渭源县| 日喀则市| 紫云| 东乡| 泗水县| 攀枝花市| 淅川县| 江源县| 西昌市| 厦门市| 海宁市| 云阳县| 上栗县| 乡城县| 广灵县| 香格里拉县| 凌云县| 青海省| 张家界市| 水城县| 宣城市| 酒泉市| 九江市| 沾化县| 正阳县| 山东| 偏关县| 偏关县| 隆林| 普兰店市|