Java InputStreamReader类

总结

  1. InputStreamReader是从字节流到字符流的桥梁, 它读取字节并使用指定的java.nio.charset.Charset将其解码为字符。它使用的字符集可以通过名称指定,也可以显式指定,或者可以接受平台的默认字符集,实质是通过字符集创建字符集解码器CharsetDecoder,通过解码器实现读取字节并转换成字符
  2. 每次调用InputStreamReader的read方法之一都可能导致从底层字节输入流读取一个或多个字节,为了实现字节到字符的高效转换,可以从底层流中提前读取比满足当前读取操作所需的更多字节
  3. 为了达到最高效率,考虑在缓冲区读取器BufferedReader中封装一个输入流读取器InputStreamReader。例如:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

InputStreamReader类方法

构造方法

方法名作用
InputStreamReader(InputStream in)创建使用默认字符集的InputStreamReader转换流,InputStream是字节流
InputStreamReader(InputStream in, String charsetName)创建使用给定命名字符集的InputStreamReader转换流,InputStream是字节流,charsetName是字符集名字
InputStreamReader(InputStream in, Charset cs)创建使用给定字符集的InputStreamReader转换流,InputStream是字节流,Charset是字符集的Java对象实现
InputStreamReader(InputStream in, CharsetDecoder dec)创建使用给定字符集解码器的InputStreamReader转换流,InputStream是字节流,CharsetDecoder是字符集解码器,上面的三个构造函数最终都会创建一个对应的字符集解码器,解码器负责将字节流解码为字符

操作方法

方法名作用
String getEncoding()返回此流正在使用的字符编码的名称
int read()读取单个字符,调用字符集解码器CharsetDecoder读取一个或几个字节解码为一个字符,返回的int是字符的ASCALL编码
int read(char cbuf[], int offset, int length)读取多个字符填充字符数组,从字符数组下标offset处开始填充,填充length个字符,底层调用字符集解码器CharsetDecoder读取多个字节转为多个字符,并写入字符数组cbuf中,返回的int是读取的字符个数
boolean ready()判断此流是否已准备好读取。如果InputStreamReader的输入缓冲区不为空,或者可以从基础字节流读取字节,则InputStreamReader已准备就绪,底层调用字符集解码器CharsetDecoder的ready方法
void close()关闭InputStreamReader转换流,底层调用字符集解码器CharsetDecoder的close方法,关闭字符集解码器
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lolxxs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值