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

您的位置:首頁技術(shù)文章
文章詳情頁

JAVA OutputStreamWriter流的實現(xiàn)

瀏覽:3日期:2022-08-09 17:54:44
一、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ìn)行存儲的

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

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

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

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

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

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

沒有理解清楚,因為write()方法會傳遞字符作為方法實參,若該字符不緩沖,那緩沖區(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對象,因此最終的實現(xiàn)要去StreamEncoder源碼進(jìn)行查看

三、OutputStreamWriter流API

1)寫入一個字符到流中:本質(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流的具體實現(xiàn)需要查看StreamEncoder流源碼才可知

到此這篇關(guān)于JAVA OutputStreamWriter流的實現(xiàn)的文章就介紹到這了,更多相關(guān)JAVA OutputStreamWriter流內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 欧美h版成版在线观看 | 欧美成人综合在线 | 一级做a爰片久久毛片美女 一级做a爰片久久毛片免费看 | 综合自拍 | 亚洲一区欧美 | 成人午夜视频在线观 | 日本成人在线免费 | 福利社在线 | 国产大片线上免费观看 | www中文字幕| 国产高清自拍视频 | 51久久夜色精品国产 | 免费黄网在线观看 | 欧美一级成人毛片视频 | 亚洲精品二区 | 黄色三级理论片 | 香蕉久久久久久狠狠色 | 亚洲一区二区成人 | 男女交性拍拍拍高清视频 | 91成人免费观看在线观看 | 国产美女精品三级在线观看 | 青青爽国产手机在线观看免费 | 国产亚洲欧美久久精品 | 美国第一毛片 | 国产呦系列免费 | 欧美在线观看高清一二三区 | 日本xxxxx黄区免费看动漫 | 99视频免费在线 | 亚洲黄色小视频 | 欧美日韩一区二区三区免费不卡 | 韩国一级特黄清高免费大片 | 欧美性69 | 亚洲www在线 | 国产成人精品视频午夜 | 欧美日韩精品一区二区三区视频在线 | 国产精品久久久精品三级 | 99九九精品免费视频观看 | 黄色三级国产 | 天天躁天天碰天天看 | 成年人在线免费观看视频网站 | a级片免费观看 |