StreamReader.DiscardBufferedData Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
İç 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.