StreamReader.DiscardBufferedData Yöntem

Tanım

İç arabelleği temizler.

public:
 void DiscardBufferedData();
public void DiscardBufferedData ();
member this.DiscardBufferedData : unit -> unit
Public Sub DiscardBufferedData ()

Örnekler

Aşağıdaki örnek, iç arabelleği ve temel alınan akışı eşitlemek için yönteminin çağrılması gereken bir senaryoyu DiscardBufferedData gösterir. Örnekteki dosya konumu göstermek için kullanılır ve metninden abcdefghijklmnopqrstuvwxyzoluşur. Veriler okunduktan sonra çağrısı DiscardBufferedData yaparak örnek beklendiği gibi çalışır. İlk 15 karakter okunduktan sonra konum 2 uzaklık değerine sıfırlanır ve kalan tüm karakterler okunur. çağrısı DiscardBufferedDatakaldırılırsa örnek beklendiği gibi çalışmaz. İlk 15 karakter okunur, ancak yalnızca temel alınan akışın konumu sıfırlanır. Nesnenin StreamReader iç arabelleği hala 16. karakterdedir. Bu nedenle, ReadToEnd arabellekteki tüm karakterlerin yanı sıra sıfırlama konumundan başlayarak temel alınan akıştaki karakterleri döndürür.

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

Açıklamalar

nesnesinin DiscardBufferedData iç arabelleği sıfırlamak için StreamReader yöntemini kullanın. Bu yöntemi yalnızca iç arabelleğin konumu ve BaseStream eşleşmediğinde çağırmanız gerekir. Arabelleğe veri okuduğunuzda ve ardından temel akışta yeni bir konum aradığınızda bu konumlar uyumsuz hale gelebilir. Bu yöntem performansı yavaşlatıyor ve yalnızca bir nesnenin içeriğinin StreamReader bir bölümünü birden çok kez okumak istediğinizde olduğu gibi kesinlikle gerekli olduğunda kullanılmalıdır.

Yaygın G/Ç görevlerinin listesi için bkz. Ortak G/Ç Görevleri.

Şunlara uygulanır

Ayrıca bkz.