Module java.base
Package java.io

Class InputStreamReader

java.lang.Object
java.io.Reader
java.io.InputStreamReader
所有已实现的接口:
Closeable, AutoCloseable, Readable
直接已知的子类:
FileReader

public class InputStreamReader extends Reader
InputStreamReader是从字节流到字符流的桥梁: 它读取字节并使用指定的字符集将它们解码为字符。它使用的字符集可以通过名称指定,也可以明确给出,或者可以使用默认字符集

每次调用InputStreamReader的read()方法之一都可能会从底层字节输入流中读取一个或多个字节。为了实现字节到字符的高效转换,可能会从底层流中预先读取比当前读取操作所需的更多字节。

为了实现最高效率,请考虑在BufferedReader中包装InputStreamReader。例如:

    BufferedReader in = new BufferedReader(new InputStreamReader(anInputStream));
自1.1版本起:
1.1
参见:
  • Constructor Details

    • InputStreamReader

      public InputStreamReader(InputStream in)
      创建一个使用默认字符集的InputStreamReader。
      参数:
      in - 一个InputStream
      参见:
    • InputStreamReader

      public InputStreamReader(InputStream in, String charsetName) throws UnsupportedEncodingException
      创建一个使用指定名称字符集的InputStreamReader。
      参数:
      in - 一个InputStream
      charsetName - 支持的字符集的名称
      抛出:
      UnsupportedEncodingException - 如果不支持指定的字符集
    • InputStreamReader

      public InputStreamReader(InputStream in, Charset cs)
      创建一个使用给定字符集的InputStreamReader。
      参数:
      in - 一个InputStream
      cs - 一个字符集
      自1.4版本起:
      1.4
    • InputStreamReader

      public InputStreamReader(InputStream in, CharsetDecoder dec)
      创建一个使用给定字符集解码器的InputStreamReader。
      参数:
      in - 一个InputStream
      dec - 一个字符集解码器
      自1.4版本起:
      1.4
  • Method Details

    • getEncoding

      public String getEncoding()
      返回此流正在使用的字符编码的名称。

      如果编码具有历史名称,则返回该名称;否则返回编码的规范名称。

      如果此实例是使用InputStreamReader(InputStream, String)构造函数创建的,则返回的名称,作为编码的唯一标识,可能与传递给构造函数的名称不同。如果流已关闭,则此方法将返回null

      返回:
      此编码的历史名称,如果流已关闭则返回null
      参见:
    • read

      public int read() throws IOException
      读取单个字符。
      覆盖:
      read 在类中 Reader
      返回:
      读取的字符,如果已到达流的末尾则返回-1
      抛出:
      IOException - 如果发生I/O错误
    • read

      public int read(char[] cbuf, int off, int len) throws IOException
      将字符读入数组的一部分。此方法将阻塞,直到有一些输入可用,发生I/O错误,或者到达流的末尾。

      如果len为零,则不会读取任何字符并返回0;否则,将尝试读取至少一个字符。如果没有字符可用,因为流已到达末尾,则返回值为-1;否则,将读取至少一个字符并存储到cbuf中。

      指定者:
      read 在类中 Reader
      参数:
      cbuf - 目标缓冲区
      off - 开始存储字符的偏移量
      len - 要读取的最大字符数
      返回:
      读取的字符数,如果已到达流的末尾则返回-1
      抛出:
      IndexOutOfBoundsException - 如果off为负,或者len为负,或者len大于cbuf.length - off
      IOException - 如果发生I/O错误
    • ready

      public boolean ready() throws IOException
      告知此流是否准备好进行读取。如果InputStreamReader准备好,其输入缓冲区不为空,或者可以从底层字节流中读取字节,则它是准备好的。
      覆盖:
      ready 在类中 Reader
      返回:
      如果下一个read()保证不会因为输入而阻塞则为True,否则为False。请注意,返回False并不保证下一个读取将阻塞。
      抛出:
      IOException - 如果发生I/O错误
    • close

      public void close() throws IOException
      从类中复制的描述: Reader
      关闭流并释放与其关联的任何系统资源。一旦流被关闭,进一步的read()、ready()、mark()、reset()或skip()调用将抛出一个IOException。关闭先前关闭的流没有任何效果。
      指定者:
      close 在接口中 AutoCloseable
      指定者:
      close 在接口中 Closeable
      指定者:
      close 在类中 Reader
      抛出:
      IOException - 如果发生I/O错误