StreamReader.DiscardBufferedData 方法    
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
清除内部缓冲区。
public:
 void DiscardBufferedData();public void DiscardBufferedData ();member this.DiscardBufferedData : unit -> unitPublic Sub DiscardBufferedData ()示例
以下示例演示了必须调用 方法才能同步内部缓冲区和基础流的方案 DiscardBufferedData 。 示例中的文件用于说明位置,由文本 abcdefghijklmnopqrstuvwxyz组成。 通过在读取数据后调用 DiscardBufferedData ,示例按预期方式工作。 读取前 15 个字符后,位置将重置为偏移值 2,并读取所有剩余字符。 如果删除对 DiscardBufferedData的调用,则示例无法按预期工作。 前 15 个字符是读取的,但仅重置基础流的位置。 对象的内部缓冲区 StreamReader 仍位于第 16 个字符上。 因此,从重置位置开始, ReadToEnd 返回缓冲区中的所有字符以及基础流中的字符。
using System;
using System.IO;
class Test
{
    public static void Main()
    {
        string path = @"c:\temp\alphabet.txt";
        using (StreamReader sr = new StreamReader(path))
        {
            char[] c = null;
            c = new char[15];
            sr.Read(c, 0, c.Length);
            Console.WriteLine("first 15 characters:");
            Console.WriteLine(c);
            // writes - "abcdefghijklmno"
            sr.DiscardBufferedData();
            sr.BaseStream.Seek(2, SeekOrigin.Begin);
            Console.WriteLine("\nBack to offset 2 and read to end: ");
            Console.WriteLine(sr.ReadToEnd());
            // writes - "cdefghijklmnopqrstuvwxyz"
            // without DiscardBufferedData, writes - "pqrstuvwxyzcdefghijklmnopqrstuvwxyz"
        }
    }
}
Imports System.IO
Module Module1
    Sub Main()
        Dim path As String = "c:\temp\alphabet.txt"
        Dim sr As StreamReader = New StreamReader(path)
        Dim c(14) As Char
        sr.Read(c, 0, c.Length)
        Console.WriteLine("first 15 characters:")
        Console.WriteLine(c)
        ' writes - "abcdefghijklmno"
        sr.DiscardBufferedData()
        sr.BaseStream.Seek(2, SeekOrigin.Begin)
        Console.WriteLine(Environment.NewLine & "Back to offset 2 and read to end: ")
        Console.WriteLine(sr.ReadToEnd())
        ' writes - "cdefghijklmnopqrstuvwxyz"
        ' without DiscardBufferedData, writes - "pqrstuvwxyzcdefghijklmnopqrstuvwxyz"
        sr.Close()
    End Sub
End Module
注解
DiscardBufferedData使用 方法重置 对象的内部缓冲区StreamReader。 仅当内部缓冲区的位置与 不匹配时, BaseStream 才需要调用此方法。 将数据读入缓冲区,然后在基础流中查找新位置时,这些位置可能会变得不匹配。 此方法会降低性能,仅当绝对必要时才应使用,例如,当你要多次读取对象的部分内容 StreamReader 时。
有关常见 I/O 任务的列表,请参阅 常见 I/O 任务。