一、StringReader类的用法
1.根据流的使用规律:
- 明确读操作还是写操作:
用来读取一个String类型的字符串 - 明确操作基类(操作字节还是字符)
StringReader操作的是字符 - 明确操作的具体类(具体介质)
操作的具体介质:内存
2.既然都有了Reader,还要StringReader干什么?(应用场景)
有的情况下使用一个Reader来作为参数传递参数,但数据源又仅仅是一个String类型数据,无需从文件中写出,那么此时就可以用到StringReader。
3.具体方法应用示例
方法介绍:
- 判断此流是否支持markSupported()
- 标记流中的当前位置 mark()
- 读取单个字符 read(),如果读到流的末尾,返回-1,操作不当会抛出IO异常
- 将字符读入数组的某一部分 read(char[] cbuf,int off,int len),off存开始在数组中存储数据的起点,操作不当会抛出IO异常
- 判断此流是否已经准备好用于读取 boolean ready()
- 将该流重置为最新的标记,如果从未标记,则将其重置到字符串开头 reset()→将当前读取位置回退到流中的上次标记的位置
- 跳过流中指定数量的字符返回跳过的字符数skip(long n),操作不当会抛出IO异常
- 关闭流close()
public class F_StringReader326 {
public static String Reader(String cont) throws IOException {
//只有一个构造方法 :StringReader(String s) 创建一个新字符串
StringReader stringReader = new StringReader(cont);
//判断是否准备好用于读取
System.out.println(stringReader.ready());
//判断是否支持标记
boolean a = stringReader.markSupported();
System.out.println(a);
stringReader.mark(2); //标记位置
stringReader.skip(3);//跳过3个字符
//读取单个字符
String s1 = "";
int s;
while ((s = stringReader.read())!= -1){
s1 += (char