StringReader只有一个版本的构造方法,接受一个String做为参数 String str指向这个字符串 length 为字符串长度 next为读取元素的下标索引 mark为标记点 |
![]() |
StringWriter内部有两个版本的构造方法 在构造方法内部初始化了内部的buf 建立了一个StringBuffer 一个指定大小 一个不指定 ![]() |
提供了两个版本的read public int read() throws IOException 读取一个字符 public int read(char cbuf[], int off, int len) throws IOException 读取len个数的字符到指定的字符数组cbuf[] ,保存到指定位置off 能够看得出来,底子仍是依赖StringBuffer自己 |
![]() |
跳过流中指定数量的字符 返回跳过的字符数
此处 ns 参数可能为负数,虽然 Reader 超类的 skip 方法在此状况下会抛出一个异常
ns 为负值致使此流向后跳读 负返回值指示向后跳读 向后跳读不可能倒过字符串的开头
若是读取或跳读了整个字符串,则此方法无效且始终返回 0
|
了解到他能够为负数,并且返回值也多是负数 |
三个版本的append方法 public StringWriter append(char c) public StringWriter append(CharSequence csq) public StringWriter append(CharSequence csq, int start, int end) |
这三个方法自己没什么好说的 须要注意下的就是,它内部使用的是write ![]() |
写入StringBuffer,没什么须要刷新的,不涉及缓存 另外 这个不涉及系统资源,因此关闭一个StringWriter没有什么影响 此类中的方法在关闭该流后仍可被调用,而不会产生任何 IOException 并且继续正常使用 要理解本质,人家底层就是一个StringBuffer |
![]() |
关闭后照样可使用![]() |
String做为数据源
StringReader 是读, 从一个String中读取,因此须要一个String ,经过构造方法传递
StringWriter是写, 写入到一个String中去,因此它内部提供了一个StringBuffer中用来保存数据
|