[二十]JavaIO之StringReader 与 StringWriter
功能简介
构造方法
StringReader只有一个版本的构造方法,接受一个String作为参数 String str指向这个字符串 length 为字符串长度 next为读取元素的下标索引 mark为标记点 |
![]() |
StringWriter内部有两个版本的构造方法 在构造方法内部初始化了内部的buf 创建了一个StringBuffer 一个指定大小 一个不指定 ![]() |
其他方法
StringReader
提供了两个版本的read public int read() throws IOException 读取一个字符 public int read(char cbuf[], int off, int len) throws IOException 读取len个数的字符到指定的字符数组cbuf[] ,保存到指定位置off 可以看得出来,底子还是依赖StringBuffer本身 |
![]() |
标记相关 StringReader操作的是内存数据String 所以标记相关的三个方法是轻松支持的 使用mark记录标记点 |
![]() |
常规的ready 只有一个版本构造方法,只要合法构造了 那么数据源String就存在 那么就是可用 |
![]() |
跳过流中指定数量的字符 返回跳过的字符数
此处 ns 参数可能为负数,虽然 Reader 超类的 skip 方法在此情况下会抛出一个异常
ns 为负值导致此流向后跳读 负返回值指示向后跳读 向后跳读不可能倒过字符串的开头
如果读取或跳读了整个字符串,则此方法无效且始终返回 0
|
了解到他可以为负数,而且返回值也可能是负数 |
close方法仅仅是置空 |
![]() |
StringWriter
提供了四个版本的write方法 |
void write(char[] cbuf, int off, int len)
写入字符数组的某一部分。
void write(int c)
写入单个字符。
void write(String str)
写入一个字符串。
void write(String str, int off, int len)
写入字符串的某一部分
|
既然内不是StringBuffer,自然少不了调用StringBuffer的方法 四个write方法全部都是如此 调用了StringBuffer的append 方法 比如 ![]() |
三个版本的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中用来保存数据
|
[二十]JavaIO之StringReader 与 StringWriter的更多相关文章
- WCF学习之旅—第三个示例之三(二十九)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) 在上一篇文章中我们创建了实体对象与接口协定,在这一篇文章中我们来学习如何创建WCF的服务端代码.具体步骤见下面. ...
- WCF学习之旅—TcpTrace工具(二十六)
止文(WCF学习之旅—TcpTrace工具(二十五))介绍了关于TcpTrance的一种使用方式,接下来介绍第二种使用方式. 三.通过ListenUri实现基于tcpTracer的消息路由 对于路由的 ...
- WCF学习之旅—实现支持REST客户端应用(二十四)
WCF学习之旅—实现REST服务(二十二) WCF学习之旅—实现支持REST服务端应用(二十三) 在上二篇文章中简单介绍了一下RestFul与WCF支持RestFul所提供的方法,及创建一个支持RES ...
- geotrellis使用(二十五)将Geotrellis移植到spark2.0
目录 前言 升级spark到2.0 将geotrellis最新版部署到spark2.0(CDH) 总结 一.前言 事情总是变化这么快,前面刚写了一篇博客介绍如何将geotrellis移植 ...
- geotrellis使用(二十二)实时获取点状目标对应的栅格数据值
目录 前言 实现方法 总结 一.前言 其实这个功能之前已经实现,今天将其采用1.0版的方式进行了重构与完善,现将该内容进行总结. 其实这个功能很常见,比如google地球上 ...
- 无废话ExtJs 入门教程二十[数据交互:AJAX]
无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
- 二十五、JDK1.5新特性---枚举
与上篇文章介绍的相同,本文也是介绍jdk 1.5出现的新特性,本文将介绍枚举的相关用法. 在jdk 1.5 之前.Java可以有两种方式定义新类型:类和接口.对于大部分面向对象来说.这两种方法看起来似 ...
- [分享] IT天空的二十二条军规
Una 发表于 2014-9-19 20:25:06 https://www.itsk.com/thread-335975-1-1.html IT天空的二十二条军规 第一条.你不是什么都会,也不是什么 ...
- Bootstrap <基础二十九>面板(Panels)
Bootstrap 面板(Panels).面板组件用于把 DOM 组件插入到一个盒子中.创建一个基本的面板,只需要向 <div> 元素添加 class .panel 和 class .pa ...
随机推荐
- go语言数据库操作,xorm框架
待续............................................... 连接数据库 db, err := xorm.NewEngine("mysql", ...
- 数据分析——pandas
简介 import pandas as pd # 在数据挖掘前一个数据分析.筛选.清理的多功能工具 ''' pandas 可以读入excel.csv等文件:可以创建Series序列,DataFrame ...
- docker之使用System.Drawing生成图片缺少Gdiplus.dll错误
1.在docker 上找到并运行需要System.Drawing的镜像 然后退出执行另一语句 docker run -it container01 进入镜像以方便安装gdiplus docker ex ...
- java课程之团队开发冲刺阶段1.6
一.总结昨天进度 1.依照视频学习了sqlite,但是由于视频的不完整性导致并不知道代码的实际效果怎么样. 二.遇到的问题 1.依据上一条,在date目录下date文件夹中,的确发现了数据库的文件,但 ...
- dedecms 文章根据 权重排序
原文链接 一: dede:list 标签 找到 /include/arc.listview.class.php if($orderby=="senddate" || $orde ...
- Git Bash for Windows add ssh key时报Could not open a connection to your authentication agent.
$ ssh-add id_rsa_bitbucketCould not open a connection to your authentication agent. 运行: $ ssh-agent ...
- JAVA 热文
Java技术面试篇 Javase基础面试题(1) Javase基础面试题(2) Javase基础面试题(3) Javase基础面试题(4) Javase基础面试题(5) Javaweb面试题(6) J ...
- php免杀教程【绝对原创】
.函数回调. 使用其他函数进行调用,并执行. 如:array_map('a'.'s'.'se'.'r'.'t',array($_POST['x'])); 详细教程 + 测试结果(安全狗+360主机卫士 ...
- 阿里面试100%问到,JVM性能调优篇
JVM 调优概述 性能定义 吞吐量 - 指不考虑 GC 引起的停顿时间或内存消耗,垃圾收集器能支撑应用达到的最高性能指标. 延迟 - 其度量标准是缩短由于垃圾啊收集引起的停顿时间或者完全消除因垃圾收集 ...
- Python微信公众号开发—小白篇
本文面向想通过Python学习公众号开发的同学.一站式解决新手开发微信公众号遇到的所有问题. 为了防止我的文章被到处转载,贴一下我的公众号[智能制造专栏],欢迎大家关注. github仓库地址http ...