StreamReader.DiscardBufferedData Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Törli a belső puffert.
public:
void DiscardBufferedData();
public void DiscardBufferedData();
member this.DiscardBufferedData : unit -> unit
Public Sub DiscardBufferedData ()
Példák
Az alábbi példa egy olyan forgatókönyvet mutat be, amelyben a DiscardBufferedData metódust meg kell hívni a belső puffer és a mögöttes stream szinkronizálásához. A példában szereplő fájl a pozíció szemléltetésére szolgál, és a szövegből abcdefghijklmnopqrstuvwxyzáll. Az adatok beolvasása után történő hívással DiscardBufferedData a példa a várt módon működik. Az első 15 karakter beolvasása után a pozíció visszaáll a 2 eltolási értékre, és az összes többi karakter beolvasva lesz. Ha eltávolítja a hívását DiscardBufferedData, a példa nem a várt módon működik. Az első 15 karakter be van olvasva, de csak a mögöttes stream pozíciója alaphelyzetbe áll. Az objektum belső puffere StreamReader továbbra is a 16. karakteren van.
ReadToEnd Ezért a pufferben lévő összes karaktert és a mögöttes streamben lévő karaktereket adja vissza az alaphelyzetbe állítási pozíciótól kezdve.
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
Megjegyzések
A metódus használatával DiscardBufferedData állítsa alaphelyzetbe az objektum belső pufferét StreamReader . Ezt a metódust csak akkor kell meghívnia, ha a belső puffer BaseStream helyzete nem egyezik meg. Ezek a pozíciók eltérőek lehetnek, ha adatokat olvas be a pufferbe, majd új pozíciót keres az alapul szolgáló adatfolyamban. Ez a módszer lelassítja a teljesítményt, és csak akkor használható, ha feltétlenül szükséges, például ha egy objektum tartalmának StreamReader egy részét többször szeretné elolvasni.
A gyakori I/O-feladatok listáját a Gyakori I/O-feladatok című témakörben találja.