在 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()); }