StringReader:用来将字符串转换成字符输入流。然后使用字符输入流提供的方式进行操作,也可以提供给其他高级字符输入流来使用。如可以将该字符输入流提供给 BufferedReader输入流使用。
public class StringReaderStringWrite {
public static void main(String[] args) throws IOException {
//模拟从某个地方获取到的大量字符串数据
String str = "Java的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,\n在 Java中把不同的输入/输出源(键盘、文件、网络连接等)抽象表述 为“流”(stream),\n通过流的方式允许Java程序使用相同的方式来访问不同的输入输 出源。\nstream是从起源(source)到接收(sink)的有序数据。\nJava把所有传统的流类型(类或抽象类)都放在java.io包中,用以实现输入输出功能。";
//把字符串转为输入流
StringReader in=new StringReader(str);
//通过BufferedReader访问字符串
BufferedReader reader=new BufferedReader(in);
String strPrintln="";
while ((strPrintln=reader.readLine())!=null) {
System.out.println(strPrintln);
}
reader.close();//关闭流
}
}
StringWriter:一个字符流,可以用其回收在字符串缓冲区中的输出来构造字符串。 关闭 StringWriter 无效,此类中的方法在关闭该流后仍可被调用,而不会产生任何 IOException异常。
在内存中缓存读取到的所有字符串,然后可以使用toString方法一次性全部输出字符串。
String strString = "StringWriter:一个字符流,可以用其回收在字符串缓冲区中的输出来构造字符串";
//创建StringWriter实例
StringWriter stringWriter=new StringWriter();
stringWriter.write(strString);//可直接写入字符串
stringWriter.write("\n------------\n"); stringWriter.write(strString, 0, 20);//也可写入字符串的某一部分。
stringWriter.write("\r------------\r");
Reader reader1 = new FileReader("G:/z/WriterDemo.txt");
char[] cs = new char[10];
int count = 0;
while((count=reader1.read(cs, 0, cs.length)) != -1 ){
//把读取的内容写入到StringWriter对象
stringWriter.write(cs, 0, count);//也可写入字符数组
}
stringWriter.close();//关闭无效,此类中的方法在关闭该流后仍可被调用,而不会产生任何 IOException异常。
//一次性将字符串取出
String strWrite = stringWriter.toString();//toString():以字符串的形式返回该缓冲区的当前值。
System.out.println(strWrite);
输出结果如下: