StreamReader.DiscardBufferedData Metódus

Definíció

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.

A következőre érvényes:

Lásd még