在 Java 的 I/O 中,java.io.StringWriter 类能够让你以字符串的形式提取写入 Writer 的字符内容。设想这样一种场景:你的组件仅支持向 Writer 写入数据,然而你最终的需求是将这些数据整合为一个字符串,此时 StringWriter 类就会发挥巨大的作用,为你解决数据格式转换的难题。
以下是一个简单的 StringWriter 示例:
package com.hxstrive.java_io;
import java.io.StringWriter;
public class StringWriterExample {
public static void main(String[] args) {
// 创建 StringWriter 对象
try(StringWriter writer = new StringWriter()) {
// 写入字符串
writer.write("Hello, ");
writer.write("StringWriter!");
// 获取写入的内容作为字符串
String result = writer.toString();
System.out.println(result);
} catch (Exception e) {
System.err.println("An error occurred while writing: " + e.getMessage());
}
}
//输出
//Hello, StringWriter!
}上述示例中,首先,借助 new StringWriter() 构造函数创建一个 StringWriter 对象,用于后续的字符写入操作。接着,通过调用 write() 方法,将字符串 "Hello, " 和 "StringWriter!" 写入到 StringWriter 中。最后,使用 toString() 方法,把 StringWriter 中的内容以字符串的形式提取出来,并存储在 result 变量中,输出到控制台。
虽然 StringWriter 和 StringReader 一样,没有连接到任何底层系统资源(如文件或网络连接),因此关闭它并不重要。但是为了编码规范,以及避免潜在问题,建议还是进行关闭。
关闭 StringWriter 的方法是调用其 close() 方法。如下:
stringWriter.close();
也可以使用 Java7 中引入的 try-with-resources 结构,自动关闭 StringWriter,如下:
try(StringWriter writer = new StringWriter()) {
// 写入字符串
writer.write("Hello, ");
writer.write("StringWriter!");
// 获取写入的内容作为字符串
String result = writer.toString();
System.out.println(result);
} catch (Exception e) {
System.err.println("An error occurred while writing: " + e.getMessage());
}