Java中的InputStreamReader和OutputStreamWriter源码分析_动力节点Java学院整理

  

  

<强> 1。InputStreamReader源码(基于jdk1.7.40)
  

        java包;   进口charset;   进口charsetdecoder;   进口sun.nio.cs.StreamDecoder;//将“字节输入流”转换成”字符输入流”   公开课InputStreamReader延伸读者{   私人最终StreamDecoder sd;//根据在创建InputStreamReader,使用默认的编码   公共InputStreamReader (InputStream) {   超级(的);   尝试{   sd=StreamDecoder。forInputStreamReader(,(字符串)零);//# #检查锁对象   }捕捉(UnsupportedEncodingException e) {//默认编码应该是可用的   把新的错误(e);   }   }//根据在创建InputStreamReader,使用编码charsetName(编码名)   公共InputStreamReader (InputStream,字符串charsetName)   抛出UnsupportedEncodingException   {   超级(的);   如果(charsetName==null)   把新NullPointerException (“charsetName”);   sd=StreamDecoder。forInputStreamReader(这,charsetName);   }//根据在创建InputStreamReader,使用编码cs   公共InputStreamReader (InputStream,字符集cs) {   超级(的);   如果(cs==null)   把新NullPointerException(“字符集”);   sd=StreamDecoder。forInputStreamReader(这,cs);   }//根据在创建InputStreamReader,使用解码器12月   公共InputStreamReader (InputStream, CharsetDecoder dec) {   超级(的);   如果(12月==null)   把新NullPointerException(“字符集解码”);   sd=StreamDecoder。forInputStreamReader(这,12月);   }//获取解码器   公共字符串getEncoding () {   返回sd.getEncoding ();   }//读取并返回一个字符   公共int read()抛出IOException {   返回sd.read ();   }//将InputStreamReader中的数据写入cbuf中,从cbuf的抵消位置开始写入,写入长度是长度   公共int读(char cbuf [], int抵消,int长度)抛出IOException {   返回sd。读(cbuf、抵消、长度);   }//能否从InputStreamReader中读取数据   公众准备好布尔()抛出IOException {   返回sd.ready ();   }//关闭InputStreamReader   公共空间close()抛出IOException {   sd.close ();   }   }      

<强> 2。OutputStreamWriter源码(基于jdk1.7.40)
  

        java包;   进口charset;   进口charsetencoder;   进口sun.nio.cs.StreamEncoder;//将“字节输出流”转换成”字符输出流”   公开课OutputStreamWriter延伸作家{   私人最终StreamEncoder se;//根据出创建OutputStreamWriter,使用编码charsetName(编码名)   公共OutputStreamWriter (OutputStream,字符串charsetName)   抛出UnsupportedEncodingException   {   超级(出);   如果(charsetName==null)   把新NullPointerException (“charsetName”);   se=StreamEncoder。forOutputStreamWriter(这,charsetName);   }//根据出创建OutputStreamWriter,使用默认的编码   公共OutputStreamWriter (OutputStream) {   超级(出);   尝试{   se=StreamEncoder。forOutputStreamWriter(,这(字符串)零);   }捕捉(UnsupportedEncodingException e) {   把新的错误(e);   }   }//根据出创建OutputStreamWriter,使用编码cs   公共OutputStreamWriter (OutputStream,字符集cs) {   超级(出);   如果(cs==null)   把新NullPointerException(“字符集”);   se=StreamEncoder。forOutputStreamWriter(这,cs);   }//根据出创建OutputStreamWriter,使用编码器内附   公共OutputStreamWriter (OutputStream, CharsetEncoder enc) {   超级(出);   如果(enc==null)   把新NullPointerException(“字符集编码器”);   se=StreamEncoder。forOutputStreamWriter(这,enc);   }java io系列01之“目录”//获取编码器内附   公共字符串getEncoding () {   返回se.getEncoding ();   }//刷新缓冲区   空白flushBuffer()抛出IOException {   se.flushBuffer ();   }//将单个字符写入到OutputStreamWriter中   公共空间写(int c)抛出IOException {   se.write (c);   }//将字符数组cbuf从从开始的数据写入到OutputStreamWriter中,写入长度是莱恩   公共空间写(char cbuf [], int, int len)抛出IOException {   se。写(cbuf, len);   }//将字符串str从从开始的数据写入到OutputStreamWriter中,写入长度是莱恩   公共空间写(String str, int, int len)抛出IOException {   se。写(str, len);   }java io系列01之“目录”//刷新“输出流”//它与flushBuffer()的区别是:flushBuffer()只会刷新缓冲,而冲洗()是刷新流,冲洗()包括了flushBuffer。   公共空间冲洗()抛出IOException {   se.flush ();   }//关闭”输出流”   公共空间close()抛出IOException {   se.close ();   }   }

Java中的InputStreamReader和OutputStreamWriter源码分析_动力节点Java学院整理