Module  java.base
软件包  java.io

Class InputStreamReader

  • All Implemented Interfaces:
    CloseableAutoCloseableReadable
    已知直接子类:
    FileReader


    public class InputStreamReader
    extends Reader
    InputStreamReader是从字节流到字符流的桥梁:它读取字节,并使用指定的charset将其解码为字符。 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。

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

    为了最大的效率,请考虑在BufferedReader中包装一个InputStreamReader。 例如:

      BufferedReader in
       = new BufferedReader(new InputStreamReader(System.in)); 
    从以下版本开始:
    1.1
    另请参见:
    BufferedReaderInputStreamCharset
    • 构造方法详细信息

      • InputStreamReader

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

        public InputStreamReader​(InputStream in,
                                 Charset cs)
        创建一个使用给定字符集的InputStreamReader。
        参数
        in - 一个InputStream
        cs - 一个字符集
        从以下版本开始:
        1.4
      • InputStreamReader

        public InputStreamReader​(InputStream in,
                                 CharsetDecoder dec)
        创建一个使用给定字符集解码器的InputStreamReader。
        参数
        in - 一个InputStream
        dec - 一个字符集解码器
        从以下版本开始:
        1.4
    • 方法详细信息

      • getEncoding

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

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

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

        结果
        该编码的历史名称,或 null如果流已关闭
        另请参见:
        Charset
      • read

        public int read​()
                 throws IOException
        读一个字符
        重写:
        readReader
        结果
        字符读取,如果已经达到流的结尾,则为-1
        异常
        IOException - 如果发生I / O错误
      • read

        public int read​(char[] cbuf,
                        int offset,
                        int length)
                 throws IOException
        将字符读入数组的一部分。
        Specified by:
        readReader
        参数
        cbuf - 目的缓冲区
        offset - 开始存储字符的偏移量
        length - 要读取的最大字符数
        结果
        读取的字符数,如果已经达到流的结尾,则为-1
        异常
        IOException - 如果发生I / O错误
        IndexOutOfBoundsException - 如果发生I / O错误
      • ready

        public boolean ready​()
                      throws IOException
        告诉这个流是否准备好被读取。 如果InputStreamReader的输入缓冲区不为空,或者字节可以从底层字节流读取,则InputStreamReader就绪。
        重写:
        readyReader
        结果
        如果下一个read()保证不阻止输入,则为True,否则为false。 请注意,返回false并不能保证下一次读取将被阻止。
        异常
        IOException - 如果发生I / O错误
      • close

        public void close​()
                   throws IOException
        描述从类别复制: Reader
        关闭流并释放与之相关联的任何系统资源。 一旦流已关闭,进一步的read(),ready(),mark(),reset()或skip()调用将抛出IOException。 关闭以前关闭的流无效。
        Specified by:
        close在接口 AutoCloseable
        Specified by:
        close在接口 Closeable
        Specified by:
        closeReader
        异常
        IOException - 如果发生I / O错误