StringReader类的使用
Posted 二木成林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
}
}
以上是关于StringReader类的使用的主要内容,如果未能解决你的问题,请参考以下文章
StringReader 和 for 循环之间的速度比较。 (将字符串转换为 jaxb 对象时)
如何将 inputsource 转换为 inputstream 并将其作为参数提供给 stringreader?