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 ö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 abcdefghijklmnopqrstuvwxyz
oluş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.