Module  java.base
软件包  java.io

Class Reader

    • Field Summary

      Fields  
      Modifier and Type Field 描述
      protected Object lock
      用于同步此流上的操作的对象。
    • 构造方法摘要

      构造方法  
      Modifier Constructor 描述
      protected Reader​()
      创建一个新的字符流阅读器,其关键部分将在阅读器本身上同步。
      protected Reader​(Object lock)
      创建一个新的字符流阅读器,其关键部分将在给定对象上同步。
    • 字段详细信息

      • lock

        protected Object lock
        用于同步此流上的操作的对象。 为了效率,字符流对象可以使用自身以外的对象来保护关键部分。 因此,子类应该使用此字段中的对象,而不是this或同步方法。
    • 构造方法详细信息

      • Reader

        protected Reader​()
        创建一个新的字符流阅读器,其关键部分将在阅读器本身上同步。
      • Reader

        protected Reader​(Object lock)
        创建一个新的字符流阅读器,其关键部分将在给定对象上同步。
        参数
        lock - 要同步的对象。
    • 方法详细信息

      • read

        public int read​(CharBuffer target)
                 throws IOException
        尝试将字符读入指定的字符缓冲区。 缓冲区用作字符存储库:唯一的更改是put操作的结果。 不执行缓冲器的翻转或倒带。
        Specified by:
        read在接口 Readable
        参数
        target - 读取字符的缓冲区
        结果
        添加到缓冲区的字符数,如果此字符源结束,则为-1
        异常
        IOException - 如果发生I / O错误
        NullPointerException - 如果target为null
        ReadOnlyBufferException - 如果目标是只读缓冲区
        从以下版本开始:
        1.5
      • read

        public int read​()
                 throws IOException
        读一个字符 该方法将阻塞,直到字符可用,发生I / O错误或达到流的结尾。

        旨在支持高效单字符输入的子类应该覆盖此方法。

        结果
        字符读取,作为0到65535( 0x00-0xffff )范围内的整数,如果已经达到流的末尾,则 0x00-0xffff -1。
        异常
        IOException - 如果发生I / O错误
      • read

        public int read​(char[] cbuf)
                 throws IOException
        将字符读入数组。 该方法将阻塞,直到某些输入可用,发生I / O错误或达到流的结尾。
        参数
        cbuf - 目的缓冲区
        结果
        读取的字符数,如果已经达到流的结尾,则为-1
        异常
        IOException - 如果发生I / O错误
      • read

        public abstract int read​(char[] cbuf,
                                 int off,
                                 int len)
                          throws IOException
        将字符读入数组的一部分。 该方法将阻塞,直到某些输入可用,发生I / O错误或达到流的结尾。
        参数
        cbuf - 目的缓冲区
        off - 开始存储字符的偏移量
        len - 要读取的最大字符数
        结果
        读取的字符数,如果已经达到流的结尾,则为-1
        异常
        IOException - 如果发生I / O错误
        IndexOutOfBoundsException - 如果 off为负数,或 len为负数,或 len大于 cbuf.length - off
      • skip

        public long skip​(long n)
                  throws IOException
        跳过字符 该方法将阻塞,直到某些字符可用,发生I / O错误或达到流的结尾。
        参数
        n - 要跳过的字符数
        结果
        实际跳过的字符数
        异常
        IllegalArgumentException - 如果 n为负数。
        IOException - 如果发生I / O错误
      • ready

        public boolean ready​()
                      throws IOException
        告诉这个流是否准备好被读取。
        结果
        如果下一个read()保证不阻止输入,则为True,否则为false。 请注意,返回false并不能保证下一次读取将被阻止。
        异常
        IOException - 如果发生I / O错误
      • markSupported

        public boolean markSupported​()
        告诉这个流是否支持mark()操作。 默认实现始终返回false。 子类应该覆盖此方法。
        结果
        当且仅当此流支持标记操作时才为真。
      • mark

        public void mark​(int readAheadLimit)
                  throws IOException
        标记流中的当前位置。 对reset()的后续调用将尝试将流重新定位到此位置。 并非所有字符输入流都支持mark()操作。
        参数
        readAheadLimit - 限制仍然保留标记时可能读取的字符数。 读了这么多字符后,尝试重置流可能会失败。
        异常
        IOException - 如果流不支持mark(),或者发生其他I / O错误
      • reset

        public void reset​()
                   throws IOException
        重置流。 如果流已被标记,则尝试在标记处重新定位。 如果流未被标记,则尝试以某种方式将其重置为特定流,例如通过将其重新定位到其起始点。 并不是所有的字符输入流都支持reset()操作,有些支持reset(),而不支持mark()。
        异常
        IOException - 如果流未被标记,或标记已被无效,或者流不支持reset(),或者发生其他I / O错误
      • close

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