模块  java.base
软件包  java.io

Class Reader

    • 字段汇总

      字段  
      变量和类型 字段 描述
      protected Object lock
      用于同步此流上的操作的对象。
    • 构造方法摘要

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

      • lock

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

      • Reader

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

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

      • nullReader

        public static Reader nullReader()
        返回不读取任何字符的新Reader 返回的流最初是打开的。 通过调用close()方法关闭流。 close()后续调用无效。

        虽然流是开放的, read()read(char[])read(char[], int, int)read(Charbuffer)ready()skip(long)transferTo()方法的行为都好像流的末尾已到达。 关闭流后,这些方法全部抛出IOException

        markSupported()方法返回false mark()reset()方法抛出IOException

        object用来对返回的同步操作Reader未指定。

        结果
        Reader ,不读取任何字符
        从以下版本开始:
        11
      • read

        public int read​(CharBuffer target)         throws IOException
        尝试将字符读入指定的字符缓冲区。 缓冲区按原样用作字符存储库:唯一的更改是put操作的结果。 不执行缓冲器的翻转或倒带。
        Specified by:
        read在界面 Readable
        参数
        target - 将字符读入的缓冲区
        结果
        添加到缓冲区的字符数,如果此字符源位于其末尾,则为-1
        异常
        IOException - 如果发生I / O错误
        NullPointerException - 如果target为null
        ReadOnlyBufferException - 如果target是只读缓冲区
        从以下版本开始:
        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。 子类应该重写此方法。
        结果
        当且仅当此流支持标记操作时才返回true。
      • 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错误
      • transferTo

        public long transferTo​(Writer out)                throws IOException
        读取此阅读器中的所有字符,并按照读取的顺序将字符写入给定的编写器。 返回时,此阅读器将位于流的末尾。 此方法不会关闭读取器或写入器。

        此方法可能会无限期地阻止读取器读取或写入写入器。 读取器和/或写入器异步关闭或者在传输期间线程中断的情况的行为是高度读取器和写入器特定的,因此未指定。

        如果从读取器读取或写入写入器时发生I / O错误,则可能在读取或写入某些字符后执行此操作。 因此,读取器可能不在流的末端,并且一个或两个流可能处于不一致状态。 如果发生I / O错误,强烈建议立即关闭两个流。

        参数
        out - 作者,非null
        结果
        转移的字符数
        异常
        IOException - 如果在读取或写入时发生I / O错误
        NullPointerException - 如果 outnull
        从以下版本开始:
        10