StringReader类的使用

概述

字符串输入流,其本质就是字符串。StringWriter的使用请参考:StringWriter类的使用

构造方法

构造方法说明
public StringReader(String s)创建一个新的StringReader。

常用方法

成员方法说明
void ensureOpen()检查以确保流是打开的,如果流关闭了则抛出异常。
int read()读取流中的单个字符,返回的该字符对应的int值。如果已到达流的末尾,则返回-1。
int read(char cbuf[], int off, int len)读取len个字符到chars数组中,从chars数组中的下标off开始存储,返回实际存储的字符数。
long skip(long ns)跳过流中指定数量的字符,返回跳过的字符数。ns参数可以为负数,但需要注意使用。
boolean ready()告诉这个流是否准备好被读取,如果保证下一个read()不会阻塞输入,则返回true。
boolean markSupported()告诉这个流是否支持mark()操作,它一定支持,因为该方法就只返回true。
void mark(int readAheadLimit)标记流中的当前位置。 对 reset() 的后续调用会将流重新定位到这一点。
void reset()将流重置为最近的标记(即mark()标记的位置),如果从未标记过,则重置为字符串的开头。
void close()关闭流并释放与其关联的任何系统资源。 一旦流关闭,进一步的 read()、ready()、mark() 或 reset() 调用将抛出 IOException。 关闭已关闭的流没有任何效果。

实例

public class Test {
    public static void main(String[] args) throws IOException {
        // 创建StringReader实例对象
        String str = "Hello World";
        StringReader sr = new StringReader(str);

        // read()方法,从流中读取字符
        int sc = sr.read();// 读取单个字符,若到流末尾则返回-1
        System.out.println((char) sc);
        char[] chars = new char[1024];
        int num = sr.read(chars, 0, str.length());// 读取len个字符到chars数组中,从chars数组中的下标off开始存储,返回实际存储的字符数
        System.out.println(new String(chars, 0, num));// 注意,这里输出的是"ello World",因为第一个字符"H"已经被读取了

        // reset()方法
        sr.reset();// 将流重置为最近的标记,如果从未标记过,则重置为字符串的开头。
        num = sr.read(chars, 0, str.length());
        System.out.println(new String(chars, 0, num));// 输出结果为整个字符串,即"Hello World"

        // close()方法,关闭流无效,关闭后调用该类的其他方法会抛出异常java.io.IOException: Stream closed
        sr.close();
        // sr.read();
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值