色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

JAVA OutputStreamWriter流的實現

瀏覽:10日期:2022-08-09 17:54:44
一、OutputStreamWriter流

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

每次調用write()方法都會導致在給定字符上調用編碼轉換器。生成的字節在寫入底層輸出流之前在緩沖區中累積。可以指定此緩沖區的大小,但默認情況下,它足夠大,可用于大多數用途。請注意,傳遞給write()方法的字符不會被緩沖。

為了獲得最高效率,請考慮在BufferedWriter中包裝OutputStreamWriter,以避免頻繁的轉換器調用

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

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

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

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

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

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

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

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

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

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流的實現的文章就介紹到這了,更多相關JAVA OutputStreamWriter流內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 国产深夜福利在线观看网站 | 亚洲欧洲一区二区 | 亚洲综合伊人色一区 | 久久青草网站 | 精品国产一区二区三区不卡 | 国产欧美一区二区三区视频在线观看 | 精品国产免费观看久久久 | 真实国产乱子伦高清 | 国产精品区一区二区免费 | 欧美笫一页 | 日本色中色 | 中文字幕亚洲一区二区va在线 | 日本护士一级毛片在线播放 | 国产精品久久国产三级国电话系列 | 亚洲在线中文字幕 | 国产午夜精品理论片小yo奈 | 久久欧美精品欧美久久欧美 | 国产精品爽爽va在线观看无码 | 国产成人精品视频免费大全 | 99久久免费精品国产免费 | 人碰人操 | 免费观看成人久久网免费观看 | 国产精品99久久久久久宅男 | 中文在线最新版天堂 | 免费看成人播放毛片 | 国内美女福利视频在线观看网站 | 久久亚洲综合中文字幕 | 波多野结衣视频在线 | 韩国福利影视一区二区三区 | 超级碰碰碰视频视频在线视频 | 中国一级特黄大片毛片 | 成人国产精品免费视频 | 亚洲欧美日韩国产精品影院 | 日本韩国一级毛片中文字幕 | 国产精品综合一区二区三区 | 久草福利社 | 久草草视频在线观看免费高清 | 国产精品久久久久久吹潮 | 综合 欧美 国产 视频二区 | 无码精品一区二区三区免费视频 | 国产一级做a爰片在线 |