`
lizhensan
  • 浏览: 377339 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用StringWriter和StringReader的好处

    博客分类:
  • java
 
阅读更多

 

当你有一组应用程序接口(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之后,官方推荐使用的。

 

 

分享到:
评论

相关推荐

    XML与DataSet的相互转换类

    在这个方法中,我们使用了StringReader和XmlTextReader两个类。StringReader类用于读取字符串流,而XmlTextReader类用于读取xml文件或字符串流。在将xml对象内容字符串转换为DataSet对象时,我们首先使用String...

    如何将xml的String字符串转化标准格式的String字符串(jdom)

    // 使用StringReader将XML字符串作为输入 StringReader inputReader = new StringReader(xml); // 解析XML字符串并创建Document对象 Document document = saxBuilder.build(inputReader); // 创建...

    XML与dataset转换文档

    在提供的代码片段中,创建了一个StringWriter和StringBuilder实例,然后使用DataSet的`WriteXml`方法,将数据写入到StringBuilder,最后返回XML字符串。在`ConvertDataSetToXML`方法中,还创建了MemoryStream和...

    浅谈Java的输入输出流

    - **第4步**:使用 `BufferedReader` 和 `StringReader` 从步骤2获得的字符串中读取每一行数据,然后使用 `PrintWriter` 和 `BufferedWriter` 将这些数据写入新文件。 #### 七、结论 Java的输入输出功能虽然看似...

    对象与xml相互转换

    using (var stringReader = new StringReader(xmlString)) { return (Person)serializer.Deserialize(stringReader); } } // 反序列化XML文件到对象 public static Person DeserializeXmlFileToObject(string ...

    JAXBUtil使用JAXB进行xml和bean互转

    return (T) unmarshaller.unmarshal(new StringReader(xml)); } public static String javaObjectToXml(Object obj) throws JAXBException { JAXBContext jaxbContext = JAXBContext.newInstance(obj.getClass...

    JAXB学习笔记

    StringReader reader = new StringReader(xmlString); Persion deserializedPersion = (Persion) unmarshaller.unmarshal(reader); ``` JAXB的优势在于它的便利性和灵活性。由于它内置于Java SE 6及以上版本,所以...

    Unity3D状态存储PlayerPrefs高级用法2

    StringReader sr = new StringReader(PlayerPrefs.GetString(key)); // 反序列化字符串,返回原始对象 return (T)serializer.Deserialize(sr); } else { // 如果key不存在,返回默认值 return default(T);...

    java 调用 xsl一些案例

    Source xmlSource = new SAXSource(reader, new InputSource(new StringReader(xmlContent))); ``` ### 案例3:处理参数和命名空间 在某些情况下,我们可能需要在XSL转换中传递参数或者处理命名空间。以下是处理...

    jibx 开发指南 Jibx完成Java到XML的相互转换

    在这个类中,我们定义了几个变量,包括`IBindingFactory factory`用于创建绑定工厂,`StringWriter writer`和`StringReader reader`用于处理字符串输入输出,以及一个`Account`对象`bean`,这是我们想要序列化的Java...

    asp.net序列化cookie-vs2010版本

    using (StringReader reader = new StringReader(serializedData)) { MyData deserializedData = (MyData)serializer.Deserialize(reader); // 使用反序列化后的数据 } } ``` 在提供的压缩包文件"Web...

    【C#】第二十二讲 xml文件的生成与读取.zip

    using (var stringReader = new StringReader(xml)) { return (Person)serializer.Deserialize(stringReader); } } ``` 总结,C#提供了强大的XML处理能力,包括生成、读取、序列化和反序列化。这些功能使得XML...

    java生成指定格式的xml和解析对于的xml

    XMLEventReader reader = inputFactory.createXMLEventReader(new StringReader(xmlString)); XMLOutputFactory outputFactory = XMLOutputFactory.newInstance(); XMLEventWriter eventWriter = outputFactory...

    C#数据表序列化,远程传输

    using (StringReader reader = new StringReader(dataTableXml)) { var deserializer = new XmlSerializer(typeof(DataTable)); dataTable = (DataTable)deserializer.Deserialize(reader); } // 在这里处理...

    java IO流读写

    - `StringReader` 和 `StringWriter` 用于字符串的读写。 - `FileReader` 和 `FileWriter` 处理文件中的字符数据。 - `PipedReader` 和 `PipedWriter` 创建字符流管道,类似于字节流的管道。 3. **装饰类...

    VB.NET XML和JSON序列化与反序列化

    Using reader As New StringReader(jsonString) Dim myObject As MyClass = jsonSerializer.Deserialize(Of MyClass)(reader) End Using ``` 在VB.NET中,XML和JSON各有优势。XML更适合复杂结构和有严格规范的...

    Java IO的一般使用原则

    4. **字符串**: 使用`StringBufferInputStream`和`StringReader`及`StringWriter`来操作字符串。 5. **通用输入输出流**: `InputStream`、`OutputStream`、`Reader`、`Writer`提供了更加通用的接口来处理各种类型的...

    xml解析和生成字符串、文档的实例

    我们可以使用`FileReader`或`FileInputStream`替换`StringReader`。生成XML文件则涉及`OutputStream`或`Writer`,以将XML内容写入文件。以下是相应的代码片段: ```java // 解析XML文件 File file = new File("path...

    自考Java语言程序设计(一)串讲笔记(珍藏版).pdf

    * 字符串输入/输出流:StringReader、StringWriter * 缓冲流:BufferedReader、BufferedWriter * 对象输入/输出流:ObjectInputStream、ObjectOutputStream 第9章 网络编程 * 网络编程的概念 * Socket编程:Socket...

Global site tag (gtag.js) - Google Analytics