当你有一组应用程序接口(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的类似效果。
文章出处:飞诺网(www.diybl.com):http://www.diybl.com/course/3_program/java/javajs/20100705/333257.html
StringWriter 内部其实就是用StringBuffer来实现 的。
StringBuffer 与 StringBuilder的区别。
StringBuffer 是多线程的,线程安全的。
StringBuilder 它是针对单线程的,线程不安全的。1.5之后,官方推荐使用的。
分享到:
相关推荐
在这个方法中,我们使用了StringReader和XmlTextReader两个类。StringReader类用于读取字符串流,而XmlTextReader类用于读取xml文件或字符串流。在将xml对象内容字符串转换为DataSet对象时,我们首先使用String...
// 使用StringReader将XML字符串作为输入 StringReader inputReader = new StringReader(xml); // 解析XML字符串并创建Document对象 Document document = saxBuilder.build(inputReader); // 创建...
在提供的代码片段中,创建了一个StringWriter和StringBuilder实例,然后使用DataSet的`WriteXml`方法,将数据写入到StringBuilder,最后返回XML字符串。在`ConvertDataSetToXML`方法中,还创建了MemoryStream和...
- **第4步**:使用 `BufferedReader` 和 `StringReader` 从步骤2获得的字符串中读取每一行数据,然后使用 `PrintWriter` 和 `BufferedWriter` 将这些数据写入新文件。 #### 七、结论 Java的输入输出功能虽然看似...
using (var stringReader = new StringReader(xmlString)) { return (Person)serializer.Deserialize(stringReader); } } // 反序列化XML文件到对象 public static Person DeserializeXmlFileToObject(string ...
return (T) unmarshaller.unmarshal(new StringReader(xml)); } public static String javaObjectToXml(Object obj) throws JAXBException { JAXBContext jaxbContext = JAXBContext.newInstance(obj.getClass...
StringReader reader = new StringReader(xmlString); Persion deserializedPersion = (Persion) unmarshaller.unmarshal(reader); ``` JAXB的优势在于它的便利性和灵活性。由于它内置于Java SE 6及以上版本,所以...
StringReader sr = new StringReader(PlayerPrefs.GetString(key)); // 反序列化字符串,返回原始对象 return (T)serializer.Deserialize(sr); } else { // 如果key不存在,返回默认值 return default(T);...
Source xmlSource = new SAXSource(reader, new InputSource(new StringReader(xmlContent))); ``` ### 案例3:处理参数和命名空间 在某些情况下,我们可能需要在XSL转换中传递参数或者处理命名空间。以下是处理...
在这个类中,我们定义了几个变量,包括`IBindingFactory factory`用于创建绑定工厂,`StringWriter writer`和`StringReader reader`用于处理字符串输入输出,以及一个`Account`对象`bean`,这是我们想要序列化的Java...
using (StringReader reader = new StringReader(serializedData)) { MyData deserializedData = (MyData)serializer.Deserialize(reader); // 使用反序列化后的数据 } } ``` 在提供的压缩包文件"Web...
using (var stringReader = new StringReader(xml)) { return (Person)serializer.Deserialize(stringReader); } } ``` 总结,C#提供了强大的XML处理能力,包括生成、读取、序列化和反序列化。这些功能使得XML...
XMLEventReader reader = inputFactory.createXMLEventReader(new StringReader(xmlString)); XMLOutputFactory outputFactory = XMLOutputFactory.newInstance(); XMLEventWriter eventWriter = outputFactory...
using (StringReader reader = new StringReader(dataTableXml)) { var deserializer = new XmlSerializer(typeof(DataTable)); dataTable = (DataTable)deserializer.Deserialize(reader); } // 在这里处理...
- `StringReader` 和 `StringWriter` 用于字符串的读写。 - `FileReader` 和 `FileWriter` 处理文件中的字符数据。 - `PipedReader` 和 `PipedWriter` 创建字符流管道,类似于字节流的管道。 3. **装饰类...
Using reader As New StringReader(jsonString) Dim myObject As MyClass = jsonSerializer.Deserialize(Of MyClass)(reader) End Using ``` 在VB.NET中,XML和JSON各有优势。XML更适合复杂结构和有严格规范的...
4. **字符串**: 使用`StringBufferInputStream`和`StringReader`及`StringWriter`来操作字符串。 5. **通用输入输出流**: `InputStream`、`OutputStream`、`Reader`、`Writer`提供了更加通用的接口来处理各种类型的...
我们可以使用`FileReader`或`FileInputStream`替换`StringReader`。生成XML文件则涉及`OutputStream`或`Writer`,以将XML内容写入文件。以下是相应的代码片段: ```java // 解析XML文件 File file = new File("path...
* 字符串输入/输出流:StringReader、StringWriter * 缓冲流:BufferedReader、BufferedWriter * 对象输入/输出流:ObjectInputStream、ObjectOutputStream 第9章 网络编程 * 网络编程的概念 * Socket编程:Socket...