Java基础知识之StringWriter流的使用
作者:咕噜是个大胖子 发布时间:2023-01-19 00:47:52
Java StringWriter流的使用
一、StringWriter流定义
API说明:在字符串缓冲区中收集输出的字符流,可用于构造字符串, 关闭流无效,关闭后调用其他方法不会报异常
二、StringWriter流实例域
//字符串缓冲过区
private StringBuffer buf;
三、StringWriter流构造函数
/**
* 利用默认大小的StringBuffer创建字符输出流
*/
public StringWriter() {
buf = new StringBuffer();
lock = buf;
}
/**
* 使用指定大小的StringBuffer创建字符输出流
*/
public StringWriter(int initialSize) {
if (initialSize < 0) {
throw new IllegalArgumentException("Negative buffer size");
}
buf = new StringBuffer(initialSize);
lock = buf;
}
四、StringWriter流方法
1)write(int c)
:写入一个字符到字符串缓冲区中
write(int c)
2)write(char cbuf[], int off, int len)
:从指定字符数组的下标off开始写len个字节到流中
/**
* 从指定字符数组的下标off开始写len个字节到流中
*/
public void write(char cbuf[], int off, int len) {
if ((off < 0) || (off > cbuf.length) || (len < 0) ||
((off + len) > cbuf.length) || ((off + len) < 0)) {
throw new IndexOutOfBoundsException();
} else if (len == 0) {
return;
}
buf.append(cbuf, off, len);
}
3)write(String str)
:写一个字符串到流中
/**
* 写一个字符串到流中
*/
public void write(String str) {
buf.append(str);
}
4)write(String str, int off, int len)
:写一个字符串的一部分到流中
/**
* 写一个字符串的一部分到流中
*/
public void write(String str, int off, int len) {
buf.append(str.substring(off, off + len));
}
5)检索字符输出流的数据
/**
* 将缓冲对象的值转成字符串输出
*/
public String toString() {
return buf.toString();
}
/**
* 返回流的字符缓冲对象StringBuff
*
* @return StringBuffer holding the current buffer value.
*/
public StringBuffer getBuffer() {
return buf;
}
6)close()
:关闭流无效,关闭后调用该类方法不会报异常
/**
* 关闭流无效,关闭后调用该类方法不会报异常
*/
public void close() throws IOException {
}
五、StringWriter流的作用
暂未使用过,故不清楚什么时候用,用在什么地方,所以先了解功能
使用StringWriter和StringReader的好处
当你有一组应用程序接口(API)只允许用Writer或Reader作为输入,但你又想使用String,这时可以用StringWriter或StringReader。
假设有下面这样一个process方法,给这个方法传递一个Person对象并把处理结果写入到一个Writer对象:
public void process_
(Person person, Writer writer);
这是设计API的一种很好的方式,因为API不必关心对象构造的问题,并且它很简单且一般化。
Writer类输出数据到一个文件;不过有时候数据必须保留在内存中,比如想在数据被输出以前在图形用户界面(GUI)上先显示一下,这时可以用StringWriter。StringWriter不是把数据写到某种形式的输出设备上,相反,它写到内存中。它有一个空的构造器和一个toString方法以得到StringBuffer。例如:
Writer writer = ...;
StringWriter out = new StringWriter(writer);
process(person, out);
StringBuffer result = out.getBuffer( );
当读入文件时也一样。可以用StringReader代替Reader来哄骗API,而不必非得从某种形式的文件中读入。StringReader的构造器要求一个String参数。例如:
Reader in = new StringReader("<conf><panic level="5"/></conf>");
alarm.loadConfig(in);
Writer和Reader类是设计来处理基于字符串的输入和输出的。InputStream和OutputStream类则应该用于处理基于字节的I/O。
在这个层次的类中,可以用ByteArrayInputStream和ByteArrayOutputStream来达到StringReader和StringWriter的类似效果。
来源:https://blog.csdn.net/ai_bao_zi/article/details/81356026


猜你喜欢
- 创建父级项目 只需保留pom.xml文件这里只需搭建一个微服务 其他操作并无<?xml version="1.0"
- 1. 引入当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象, 只有通过new关键字才会产生出对象,这时系统才会
- 1、注解@PathVariable:将请求url中的占位符参数与控制器方法入参绑定起来(Rest风格请求)@RequestHeader:获取
- C# 中没有四舍五入函数,程序语言都没有四舍五入函数,因为四舍五入算法不科学,国际通行的是 Banker 舍入法Bankers roundi
- 前几天工作中一段业务代码需要一个变量每天从1开始递增。为此自己简单的封装了一个线程安全的计数器,可以让一个变量每天从1开始递增。当然了,如果
- 本文实例讲述了C#动态加载dll扩展系统功能的方法。分享给大家供大家参考。具体分析如下:动态加载dll,主要是为了扩展功能,增强灵活性而实现
- 代码如下所示:using System;using System.Collections.Generic;using System.Text
- 首先演示下效果,分段选择按钮,支持点击和滑动切换。视图绘制过程中,要执行onMeasure、onLayout、onDraw等方法,这也是自定
- 本文分析了Android中EditText光标在4.0中的bug及解决方法。分享给大家供大家参考,具体如下:一、问题:不知道为什么,我的Ed
- JRebel 介绍IDEA上原生是不支持热部署的,一般更新了 Java 文件后要手动重启 Tomcat 服务器,才能生效,浪费不少生命啊。目
- 异常与错误:异常:在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知
- 程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间
- 今天因为发布swagger-spring-boot-starter做一个问题的修复,然后碰到了下面这个问题,记录一下解决过程,帮助后续碰到类
- WCF实例(带步骤) <xmlnamespace prefix ="o" ns ="urn:schema
- 功能描述1、创建扑克牌。包括四种花色(黑桃,红心,梅花,方块),十三种点数(2-10,J,Q,K),不考虑大小王。2、创建两个玩家。包括玩家
- 本文实例讲述了Android开发之文件操作。分享给大家供大家参考,具体如下:目前,几乎所有的设备都会涉及到文件的操作,例如什么电脑,手机等设
- 目录1、java有8种基本类型,请问byte、int、long、char、float、double、boolean各占多少个字节?2、在 A
- springboot初始化器新建项目项目结构idea工具类中初始化本地git仓库选择当前项目目录即可工具类由VCS变成了Gitadd 到缓存
- [LeetCode] 205. Isomorphic Strings 同构字符串Given two strings s
- Android N 可以同时显示多个应用窗口。 在手机上,两个应用可以在“分屏”模式中左右并排或上下并排显示。例如,用户可以 在上面窗口聊Q