字符串是我们开发中经常用到的东西,Java 针对字符串也有专门的输入输出流:
StringReader
StringWriter
一个数据源是字符串的流,提供读取、跳过、标记等方法。
close()
关闭该流并释放与之关联的所有系统资源。
mark(int readAheadLimit)
标记流中的当前位置。
markSupported()
判断此流是否支持 mark() 操作以及支持哪一项操作。
read()
读取单个字符。
read(char[] cbuf, int off, int len)
将字符读入数组的某一部分。
ready()
判断此流是否已经准备好用于读取。
reset()
将该流重置为最新的标记,如果从未标记过,则将其重置到该字符串的开头。
skip(long ns)
跳过流中指定数量的字符。
StringWriter 内部有一个 StringBuffer 对象作为其缓冲区。可以利用其缓冲区中的内容来构造字符串。
StringWriter()
使用默认初始字符串缓冲区大小创建一个新字符串 writer。
StringWriter(int initialSize)
使用指定初始字符串缓冲区大小创建一个新字符串 writer。
append(char c)
将指定字符添加到此 writer。
append(CharSequence csq)
将指定的字符序列添加到此 writer。
append(CharSequence csq, int start, int end)
将指定字符序列的子序列添加到此 writer。
close()
关闭 StringWriter 无效。
flush()
刷新该流的缓冲。
getBuffer()
返回该字符串缓冲区本身。
toString()
以字符串的形式返回该缓冲区的当前值。
write(char[] cbuf, int off, int len)
写入字符数组的某一部分。
write(int c)
写入单个字符。
write(String str)
写入一个字符串。
write(String str, int off, int len)
写入字符串的某一部分。
StringWriter 对象的关闭方法不执行任何内容,所以调用该方法不会执行任何效果。
public class StringIOTest {
private StringReader reader;
private StringWriter writer;
public static void main(String[] args) {
new StringIOTest().testStringIO();
}
private void testStringIO() {
try {
String str = "我见过只有那合久的分了,没见过分久的合";
reader = new StringReader(str);
writer = new StringWriter();
char[] arr = new char[2];
int length = 0;
reader.skip(2);
reader.reset();
while ((length = reader.read(arr)) != -1) {
writer.write(arr, 0, length);
writer.flush();
}
System.out.println(writer.getBuffer().toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}