Module java.base
Package java.io

Class CharArrayReader

java.lang.Object
java.io.Reader
java.io.CharArrayReader
所有已实现的接口:
Closeable, AutoCloseable, Readable

public class CharArrayReader extends Reader
该类实现了一个可以用作字符输入流的字符缓冲区。
自版本:
1.1
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected char[]
    buf
    字符缓冲区。
    protected int
    该缓冲区的末尾索引。
    protected int
    缓冲区中标记的位置。
    protected int
    pos
    当前缓冲区位置。

    Fields declared in class java.io.Reader

    lock
  • Constructor Summary

    Constructors
    Constructor
    Description
    CharArrayReader(char[] buf)
    从指定的字符数组创建一个CharArrayReader。
    CharArrayReader(char[] buf, int offset, int length)
    从指定的字符数组创建一个CharArrayReader。
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    close()
    关闭流并释放与其关联的任何系统资源。
    void
    mark(int readAheadLimit)
    在流中标记当前位置。
    boolean
    告知此流是否支持mark()操作,它支持。
    int
    read()
    读取单个字符。
    int
    read(char[] cbuf, int off, int len)
    将字符读入数组的一部分。
    boolean
    ready()
    告知此流是否准备好进行读取。
    void
    reset()
    将流重置为最近的标记,如果从未标记过,则重置为开头。
    long
    skip(long n)
    跳过字符。

    Methods declared in class java.io.Reader

    nullReader, read, read, transferTo

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • buf

      protected char[] buf
      字符缓冲区。
    • pos

      protected int pos
      当前缓冲区位置。
    • markedPos

      protected int markedPos
      缓冲区中标记的位置。
    • count

      protected int count
      该缓冲区的末尾索引。在该索引处及以后没有有效数据。
  • Constructor Details

    • CharArrayReader

      public CharArrayReader(char[] buf)
      从指定的字符数组创建一个CharArrayReader。
      参数:
      buf - 输入缓冲区(不会复制)
    • CharArrayReader

      public CharArrayReader(char[] buf, int offset, int length)
      从指定的字符数组创建一个CharArrayReader。

      生成的读取器将从给定的offset开始读取。可以从该读取器读取的char值的总数将是lengthbuf.length-offset中较小的那个。

      参数:
      buf - 输入缓冲区(不会复制)
      offset - 要读取的第一个字符的偏移量
      length - 要读取的字符数
      抛出:
      IllegalArgumentException - 如果offset为负数或大于buf.length,或者length为负数,或者这两个值的总和为负数。
  • Method Details

    • read

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

      public int read(char[] cbuf, int off, int len) throws IOException
      将字符读入数组的一部分。

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

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

      public long skip(long n) throws IOException
      跳过字符。如果在调用此方法之前流已到达末尾,则不会跳过任何字符并返回零。

      n参数可能为负数,即使Reader超类的skip方法在这种情况下会抛出异常。如果n为负数,则此方法不执行任何操作并返回0

      覆盖:
      skip 在类中 Reader
      参数:
      n - 要跳过的字符数
      返回:
      实际跳过的字符数
      抛出:
      IOException - 如果发生I/O错误
    • ready

      public boolean ready() throws IOException
      告知此流是否准备好进行读取。字符数组读取器始终准备好进行读取。
      覆盖:
      ready 在类中 Reader
      返回:
      如果下一个read()保证不会因为输入而阻塞,则为true,否则为false。请注意,返回false并不保证下一个读取将阻塞。
      抛出:
      IOException - 如果发生I/O错误
    • markSupported

      public boolean markSupported()
      告知此流是否支持mark()操作,它支持。
      覆盖:
      markSupported 在类中 Reader
      返回:
      如果此流支持mark操作,则为true。
    • mark

      public void mark(int readAheadLimit) throws IOException
      在流中标记当前位置。后续调用reset()将重新定位流到此点。
      覆盖:
      mark 在类中 Reader
      参数:
      readAheadLimit - 可读取的字符数限制,同时保留标记。由于流的输入来自字符数组,因此没有实际限制;因此忽略此参数。
      抛出:
      IOException - 如果发生I/O错误
    • reset

      public void reset() throws IOException
      将流重置为最近的标记,如果从未标记过,则重置为开头。
      覆盖:
      reset 在类中 Reader
      抛出:
      IOException - 如果发生I/O错误
    • close

      public void close()
      关闭流并释放与其关联的任何系统资源。一旦关闭流,进一步的read()、ready()、mark()、reset()或skip()调用将抛出IOException。关闭先前关闭的流不会产生任何效果。在另一个线程阻塞在读取器上时,此方法将阻塞。
      指定:
      close 在接口中 AutoCloseable
      指定:
      close 在接口中 Closeable
      指定:
      close 在类中 Reader