StreamReader.DiscardBufferedData Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vymaže vnitřní vyrovnávací paměť.
public:
void DiscardBufferedData();
public void DiscardBufferedData ();
member this.DiscardBufferedData : unit -> unit
Public Sub DiscardBufferedData ()
Příklady
Následující příklad ukazuje scénář, ve kterém DiscardBufferedData musí být volána metoda pro synchronizaci interní vyrovnávací paměti a podkladového datového proudu. Soubor v příkladu slouží k ilustraci pozice a skládá se z textu abcdefghijklmnopqrstuvwxyz
. Při volání DiscardBufferedData po přečtení dat funguje příklad podle očekávání. Po přečtení prvních 15 znaků se pozice resetuje na hodnotu posunu 2 a všechny zbývající znaky se načtou. Pokud odeberete volání DiscardBufferedData, příklad nebude fungovat podle očekávání. Přečte se prvních 15 znaků, ale resetuje se pouze pozice podkladového datového proudu. Vnitřní vyrovnávací paměť objektu StreamReader je stále na 16. znaku. ReadToEnd Proto vrátí všechny znaky ve vyrovnávací paměti plus znaky v podkladovém datovém proudu od pozice resetování.
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
Poznámky
DiscardBufferedData Pomocí metody resetujte vnitřní vyrovnávací paměť objektuStreamReader. Tuto metodu je třeba volat pouze v případě, že se pozice interní vyrovnávací paměti neshoduje BaseStream s hodnotou . Tyto pozice se můžou neshodovat, když načtete data do vyrovnávací paměti a pak vyhledáte novou pozici v podkladovém datovém proudu. Tato metoda zpomaluje výkon a měla by být použita pouze v případě, že je to nezbytně nutné, například když chcete číst část obsahu objektu StreamReader více než jednou.
Seznam běžných vstupně-výstupních úloh najdete v tématu Běžné vstupně-výstupní úlohy.