模块 java.base
 java.io

类 InputStreamReader

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

public class InputStreamReader extends Reader
InputStreamReader 是从字节流到字符流的桥梁:它读取字节并使用指定的 charset 将它们解码为字符。它使用的字符集可以按名称指定,也可以显式给出,或者可以使用 default charset

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

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

 BufferedReader in
  = new BufferedReader(new InputStreamReader(anInputStream));
 
自从:
1.1
参见:
  • 构造方法详细信息

    • InputStreamReader

      public InputStreamReader(InputStream  in)
      创建一个使用 default charset 的 InputStreamReader。
      参数:
      in - 输入流
      参见:
    • InputStreamReader

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

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

      public InputStreamReader(InputStream  in, CharsetDecoder  dec)
      创建一个使用给定字符集解码器的 InputStreamReader。
      参数:
      in - 输入流
      dec - 字符集解码器
      自从:
      1.4
  • 方法详情

    • 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 的输入缓冲区不为空,或者如果可以从底层字节流中读取字节,则 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 错误