StreamReader.DiscardBufferedData Yöntem

Tanım

İç arabelleği temizler.

public void 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"
        }
    }
}

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

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Ayrıca bkz.