本文档已存档,并且将不进行维护。

TextReader 类

更新:2007 年 11 月

表示可读取连续字符系列的读取器。

命名空间:  System.IO
程序集:  mscorlib(在 mscorlib.dll 中)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class TextReader : MarshalByRefObject, 
	IDisposable
/** @attribute SerializableAttribute */ 
/** @attribute ComVisibleAttribute(true) */
public abstract class TextReader extends MarshalByRefObject implements IDisposable
public abstract class TextReader extends MarshalByRefObject implements IDisposable

TextReaderStreamReaderStringReader 的抽象基类,它们分别从流和字符串读取字符。使用这些派生类可打开一个文本文件以读取指定范围的字符,或基于现有的流创建一个读取器。

对继承者的说明:

派生类必须至少实现 PeekRead 方法以创建一个有用的 TextReader 实例。

下面的代码示例阐释了 TextReaderTextWriter 两种类型的多态行为。由于 aStringWriteraStreamWriter 都属于 TextWriter 类型,因此 WriteVowel 方法会同时用这两个对象调用,并且会执行与每个特定类型关联的 Write 方法。同样,ReadText 方法会同时用 aStringReaderaStreamReader 调用,并且会执行适当的 ReadToEnd 方法。请注意,对于 aStringWriteraStringReader,备份是字符串;而对于 aStreamWriteraStreamReader,备份是文件。

using System;
using System.IO;

class TextRW
{
    static void Main()
    {
        TextWriter stringWriter = new StringWriter();
        using(TextWriter streamWriter = 
            new StreamWriter("InvalidPathChars.txt"))
        {
            WriteText(stringWriter);
            WriteText(streamWriter);
        }

        TextReader stringReader = 
            new StringReader(stringWriter.ToString());
        using(TextReader streamReader = 
            new StreamReader("InvalidPathChars.txt"))
        {
            ReadText(stringReader);
            ReadText(streamReader);
        }
    }

    static void WriteText(TextWriter textWriter)
    {
        textWriter.Write("Invalid file path characters are: ");
        textWriter.Write(Path.InvalidPathChars);
        textWriter.Write('.');
    }

    static void ReadText(TextReader textReader)
    {
        Console.WriteLine("From {0} - {1}", 
            textReader.GetType().Name, textReader.ReadToEnd());
    }
}


import System.*;
import System.IO.*;

class TextRW
{
    public static void main(String[] args)
    {
        TextWriter stringWriter = new StringWriter();
        TextWriter streamWriter = new StreamWriter("InvalidPathChars.txt");
        try {
            WriteText(stringWriter);
            WriteText(streamWriter);
        }
        finally {
            streamWriter.Dispose();
        }
        TextReader stringReader = new StringReader(stringWriter.ToString());
        TextReader streamReader = new StreamReader("InvalidPathChars.txt");
        try {
            ReadText(stringReader);
            ReadText(streamReader);
        }
        finally {
            streamReader.Dispose();
        }        
    } //main

    static void WriteText(TextWriter textWriter)
    {
        textWriter.Write("Invalid file path characters are: ");
        textWriter.Write(Path.InvalidPathChars);
        textWriter.Write('.');
    } //WriteText

    static void ReadText(TextReader textReader) 
    {
        Console.WriteLine("From {0} - {1}", 
            textReader.GetType().get_Name(),textReader.ReadToEnd());
    } //ReadText
} //TextRW


此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

.NET Framework

受以下版本支持:3.5、3.0、2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:3.5、2.0、1.0

XNA Framework

受以下版本支持:2.0、1.0
显示: