StreamReader.DiscardBufferedData Methode

Definition

Löscht den internen Puffer.

public:
 void DiscardBufferedData();
public void DiscardBufferedData ();
member this.DiscardBufferedData : unit -> unit
Public Sub DiscardBufferedData ()

Beispiele

Das folgende Beispiel zeigt ein Szenario, in dem die DiscardBufferedData -Methode aufgerufen werden muss, um den internen Puffer und den zugrunde liegenden Stream zu synchronisieren. Die Datei im Beispiel wird verwendet, um die Position zu veranschaulichen und besteht aus dem Text abcdefghijklmnopqrstuvwxyz. Durch aufrufen, DiscardBufferedData nachdem die Daten gelesen wurden, funktioniert das Beispiel wie erwartet. Nachdem die ersten 15 Zeichen gelesen wurden, wird die Position auf den Offsetwert 2 zurückgesetzt, und alle verbleibenden Zeichen werden gelesen. Wenn Sie den Aufruf von DiscardBufferedDataentfernen, funktioniert das Beispiel nicht wie erwartet. Die ersten 15 Zeichen werden gelesen, aber nur die Position des zugrunde liegenden Datenstroms wird zurückgesetzt. Der interne Puffer des StreamReader Objekts befindet sich noch auf dem 16. Zeichen. ReadToEnd Gibt daher alle Zeichen im Puffer plus die Zeichen im zugrunde liegenden Stream ab der Zurücksetzungsposition zurück.

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

Hinweise

Verwenden Sie die DiscardBufferedData -Methode, um den internen Puffer für das StreamReader -Objekt zurückzusetzen. Sie müssen diese Methode nur aufrufen, wenn die Position des internen Puffers und der BaseStream nicht übereinstimmen. Diese Positionen können nicht übereinstimmen, wenn Sie Daten in den Puffer lesen und dann eine neue Position im zugrunde liegenden Stream suchen. Diese Methode verlangsamt die Leistung und sollte nur verwendet werden, wenn dies absolut erforderlich ist, z. B. wenn Sie einen Teil des Inhalts eines StreamReader Objekts mehrmals lesen möchten.

Eine Liste der allgemeinen E/A-Aufgaben finden Sie unter Allgemeine E/A-Aufgaben.

Gilt für:

Weitere Informationen