Module java.base
Package java.io

Class StringReader

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

public class StringReader extends Reader
一个字符流,其源是一个字符串。
自 JDK 版本:
1.1
  • Field Summary

    Fields declared in class java.io.Reader

    lock
  • Constructor Summary

    Constructors
    Constructor
    Description
    创建一个新的字符串读取器。
  • 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
  • Constructor Details

    • StringReader

      public StringReader(String s)
      创建一个新的字符串读取器。
      参数:
      s - 提供字符流的字符串。
  • Method Details

    • read

      public int read() throws IOException
      读取单个字符。
      覆盖:
      read 在类中 Reader
      返回:
      读取的字符,如果已到达流的末尾则返回 -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
      抛出:
      IOException - 如果流已关闭
    • markSupported

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

      public void mark(int readAheadLimit) throws IOException
      在流中标记当前位置。随后调用 reset() 将重新定位流到此点。
      覆盖:
      mark 在类中 Reader
      参数:
      readAheadLimit - 可读取的字符数限制。因为流的输入来自字符串,所以没有实际限制,因此此参数不能为负数,但会被忽略。
      抛出:
      IllegalArgumentException - 如果 readAheadLimit < 0
      IOException - 如果发生 I/O 错误
    • reset

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

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