首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

16.10  使用StringWriterStringReader

使用StringWriterStringReader类型我们可以将文本信息当作内存中的字符一样来处理。当想为基层缓冲区添加基于字符信息的时候,它们就非常有用。在下面的例子中,我们向一个StringWriter对象(而不是在本地硬盘上的一个文件)写入一段字符串信息:

 

static void Main(string[] args)

{

  Console.WriteLine("***** Fun with StringWriter / StringReader *****\n");

 

    // 创建一个StringWriter并把字符写入内存。

  StringWriter strWriter = new StringWriter();

  strWriter.WriteLine("Don't forget Mother's Day this year...");

  strWriter.Close();

    // 获取内容副本(存储在字符串中)并向控制台输出。

  Console.WriteLine("Contents of StringWriter:\n{0}", strWriter);

}

 

因为StringWriterStreamWriter都从一个基类(TextWriter)派生,或多或少它们的写操作逻辑代码有点相同。但需要知道,StringWriter还有一个特点,那就是它能通过GetStringBuilder()方法来获取一个System.Text.StringBuilder对象:

 

static void Main(string[] args)

{

  Console.WriteLine("***** Fun with StringWriter / StringReader *****\n");

 

    // 创建一个StringWriter并把字符写入内存。

  StringWriter strWriter = new StringWriter();

...

    // 得到内部的StringBuilder

  StringBuilder sb = strWriter.GetStringBuilder();

  sb.Insert(0, "Hey!! ");

  Console.WriteLine("-> {0}", sb.ToString());

  sb.Remove(0, "Hey!! ".Length);

  Console.WriteLine("-> {0}", sb.ToString());

}

 

可使用相应的StringReader类型从字符数据流中读取信息,可以看到,实现方法和相关的StreamReader类型差不多。其实,StringReader类只不过是通过重写派生的成员来从一段字符数据而不是从一个文件中读取信息,代码如下:

 

static void Main(string[] args)

{

  Console.WriteLine("***** Fun with StringWriter / StringReader *****\n");

 

    // 创建一个StringWriter并把字符写入内存。

  StringWriter strWriter = new StringWriter();

...

    // StringWriter读取数据。

  StringReader strReader = new StringReader(writer.ToString());

  string input = null;

  while ((input = strReader.ReadLine()) != null)

  {

    Console.WriteLine (input);

  }

  strReader.Close();

}

 

源代码      StringReaderWriterApp项目的源代码位于Chapter 16子目录下。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论