System.IO.StreamReader 类

方法描述

实现一个 TextReader,使其以一种特定的编码从字节流中读取字符。

语法定义(C# System.IO.StreamReader 类 的用法)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class StreamReader : TextReader

构造函数

构造函数名称 构造函数描述
StreamReader(Stream) 为指定的流初始化 StreamReader 类的新实例。
StreamReader(String) 为指定的文件名初始化 StreamReader 类的新实例。
StreamReader(Stream, Boolean) 用指定的字节顺序标记检测选项,为指定的流初始化 StreamReader 类的一个新实例。
StreamReader(Stream, Encoding) 用指定的字符编码为指定的流初始化 StreamReader 类的一个新实例。
StreamReader(String, Boolean) 为指定的文件名初始化 StreamReader 类的新实例,带有指定的字节顺序标记检测选项。
StreamReader(String, Encoding) 用指定的字符编码,为指定的文件名初始化 StreamReader 类的一个新实例。
StreamReader(Stream, Encoding, Boolean) 为指定的流初始化 StreamReader 类的新实例,带有指定的字符编码和字节顺序标记检测选项。
StreamReader(String, Encoding, Boolean) 为指定的文件名初始化 StreamReader 类的新实例,带有指定的字符编码和字节顺序标记检测选项。
StreamReader(Stream, Encoding, Boolean, Int32) 为指定的流初始化 StreamReader 类的新实例,带有指定的字符编码、字节顺序标记检测选项和缓冲区大小。
StreamReader(String, Encoding, Boolean, Int32) 为指定的文件名初始化 StreamReader 类的新实例,带有指定字符编码、字节顺序标记检测选项和缓冲区大小。

成员/方法

方法名称 方法描述
Close 关闭 StreamReader 对象和基础流,并释放与读取器关联的所有系统资源。 (重写 TextReader.Close()。)
CreateObjRef 创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。)
DiscardBufferedData 清除内部缓冲区。
Dispose() 释放由 TextReader 对象占用的所有资源。 (继承自 TextReader。)
Dispose(Boolean) 关闭基础流,释放 StreamReader 使用的未托管资源,同时还可以根据需要释放托管资源。 (重写 TextReader.Dispose(Boolean)。)
Equals(Object) 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
GetLifetimeService 检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。)
GetType 获取当前实例的 Type。 (继承自 Object。)
InitializeLifetimeService 获取控制此实例的生存期策略的生存期服务对象。 (继承自 MarshalByRefObject。)
MemberwiseClone() 创建当前 Object 的浅表副本。 (继承自 Object。)
MemberwiseClone(Boolean) 创建当前 MarshalByRefObject 对象的浅表副本。 (继承自 MarshalByRefObject。)
Peek 返回下一个可用的字符,但不使用它。 (重写 TextReader.Peek()。)
Read() 读取输入流中的下一个字符并使该字符的位置提升一个字符。 (重写 TextReader.Read()。)
Read(Char[], Int32, Int32) 从当前流中将指定的最多个字符读到指定索引位置开始的缓冲区。 (重写 TextReader.Read(Char[], Int32, Int32)。)
ReadBlock 从当前流中读取最大 count 的字符并从 index 开始将该数据写入 buffer。 (继承自 TextReader。)
ReadLine 从当前流中读取一行字符并将数据作为字符串返回。 (重写 TextReader.ReadLine()。)
ReadToEnd 从流的当前位置到末尾读取流。 (重写 TextReader.ReadToEnd()。)
ToString 返回表示当前对象的字符串。 (继承自 Object。)

提示和注释

StreamReader 旨在以一种特定的编码输入字符,而 Stream 类用于字节的输入和输出。 使用 StreamReader 读取标准文本文件的各行信息。

除非另外指定,StreamReader 的默认编码为 UTF-8,而不是当前系统的 ANSI 代码页。 UTF-8 可以正确处理 Unicode 字符并在操作系统的本地化版本上提供一致的结果。

默认情况下,StreamReader 不是线程安全的。 有关线程安全包装的信息,请参见 TextReader.Synchronized。

Read(Char[], Int32, Int32) 和 Write(Char[], Int32, Int32) 方法重载读取和写入 count 参数指定的字符数。 这些区别于 BufferedStream.Read 和 BufferedStream.Write,后两者读写由 count 参数指定的字节数。 仅将 BufferedStream 方法用于读写字节数组元素的整型数。

注意

读取 Stream 时,使用大小与流的内部缓冲区相同的缓冲区会更有效。

有关通用 I/O 任务的列表,请参见通用 I/O 任务。

System.IO.StreamReader 类例子

下面的示例使用 StreamReader 的实例从文件中读取文本。

using System;
using System.IO;

class Test 
{
    public static void Main() 
    {
        try 
        {
            // Create an instance of StreamReader to read from a file.
            // The using statement also closes the StreamReader.
            using (StreamReader sr = new StreamReader("TestFile.txt")) 
            {
                string line;
                // Read and display lines from the file until the end of 
                // the file is reached.
                while ((line = sr.ReadLine()) != null) 
                {
                    Console.WriteLine(line);
                }
            }
        }
        catch (Exception e) 
        {
            // Let the user know what went wrong.
            Console.WriteLine("The file could not be read:");
            Console.WriteLine(e.Message);
        }
    }
}

继承层次结构

System.Object

System.MarshalByRefObject

System.IO.TextReader

System.IO.StreamReader

命名空间

namespace: System.IO

程序集: mscorlib(在 mscorlib.dll 中)

线程安全

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

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。