System.IO.StreamReader.ReadToEnd 方法

方法描述

从流的当前位置到末尾读取流。

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

public override string ReadToEnd()

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
返回值 System.String 字符串形式的流的其余部分(从当前位置到末尾)。 如果当前位置位于流的末尾,则返回空字符串 (“”)。

提示和注释

此方法重写 TextReader.ReadToEnd。

当需要从流的当前位置到末尾读取所有输入时,ReadToEnd 的性能最佳。 如果需要对从流中读取的字符数进行进一步的控制,请使用 Read(Char[], Int32, Int32) 方法重载,它通常可达到更佳的性能。

ReadToEnd 假定流在到达末尾时会知道已到达末尾。 对于交互式协议(服务器仅当被请求时才发送数据而且不关闭连接),ReadToEnd 可能被无限期阻止因为它不能到达结束,应避免出现这种情况。

请注意,当使用 Read 方法时,使用大小与流的内部缓冲区相同的缓冲区会更有效。 如果构造流时未指定缓冲区大小,则缓冲区的默认大小为 4 KB(4096 字节)。

如果当前方法引发 OutOfMemoryException,则读取器在基础 Stream 对象中的位置会向前移动此方法能够读取的字符数,而已经读入内部 ReadLine 缓冲区中的字符将被丢弃。 如果在将数据读取到缓冲区后操作基础流的位置,则基础刘的位置可能不匹配内部缓冲区的位置。 要重置内部缓冲区,请调用 DiscardBufferedData方法;但是,此方法会降低性能,并且只应在绝对必要时调用。

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

System.IO.StreamReader.ReadToEnd 方法例子

下面的代码示例在一次操作中一直读到文件的末尾。

using System;
using System.IO;

class Test 
{
	
    public static void Main() 
    {
        string path = @"c:\temp\MyTest.txt";

        try 
        {
            if (File.Exists(path)) 
            {
                File.Delete(path);
            }

            using (StreamWriter sw = new StreamWriter(path)) 
            {
                sw.WriteLine("This");
                sw.WriteLine("is some text");
                sw.WriteLine("to test");
                sw.WriteLine("Reading");
            }

            using (StreamReader sr = new StreamReader(path)) 
            {
                //This allows you to do one Read operation.
                Console.WriteLine(sr.ReadToEnd());
            }
        } 
        catch (Exception e) 
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

异常

异常 异常描述
OutOfMemoryException 内存不足,无法为返回的字符串分配缓冲区。
IOException 发生 I/O 错误。

命名空间

namespace: System.IO

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

版本信息

.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 系统要求。