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 örnekte, iç arabelleği ve temel alınan akışı eşitlemek için yönteminin çağrılması gereken bir senaryo DiscardBufferedData gösterilmektedir. Örnekteki dosya, konumu göstermek için kullanılır ve metninden abcdefghijklmnopqrstuvwxyzoluşur. Veriler okunduktan sonra çağırarak DiscardBufferedData örnek beklendiği gibi çalışır. İlk 15 karakter okunduktan sonra konum 2'nin uzaklık değerine sıfırlanır ve kalan tüm karakterler okunur. çağrısı DiscardBufferedDatakaldırırsanız, ö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 karakterleri ve 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 alınan akışta yeni bir konum aradığınızda bu konumlar uyumsuz hale gelebilir. Bu yöntem performansı yavaşlatıyor ve yalnızca nesnenin içeriğinin StreamReader bir bölümünü birden çok kez okumak istediğinizde 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.