StreamReader.DiscardBufferedData Methode

Definition

Löscht den internen Puffer.Clears the internal buffer.

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.The following example shows a scenario where the DiscardBufferedData method must be called to synchronize the internal buffer and the underlying stream. Die Datei im Beispiel wird zur Veranschaulichung der Position verwendet und besteht aus dem Text abcdefghijklmnopqrstuvwxyz .The file in the example is used to illustrate position and consists of the text abcdefghijklmnopqrstuvwxyz. Wenn DiscardBufferedData Sie nach dem Lesen der Daten aufrufen, funktioniert das Beispiel erwartungsgemäß.By calling DiscardBufferedData after the data is read, the example works as expected. Nachdem die ersten 15 Zeichen gelesen wurden, wird die Position auf den Offset Wert 2 zurückgesetzt, und alle restlichen Zeichen werden gelesen.After the first 15 characters are read, the position is reset to the offset value of 2 and all the remaining characters are read. Wenn Sie den-Aufrufern entfernen DiscardBufferedData , funktioniert das Beispiel nicht wie erwartet.If you remove the call to DiscardBufferedData, the example does not work as expected. Die ersten 15 Zeichen werden gelesen, aber nur die Position des zugrunde liegenden Streams wird zurückgesetzt.The first 15 characters are read, but only the position of the underlying stream is reset. Der interne Puffer des- StreamReader Objekts ist immer noch das 16. Zeichen.The internal buffer of the StreamReader object is still on the 16th character. Gibt daher ReadToEnd alle Zeichen im Puffer sowie die Zeichen im zugrunde liegenden Stream zurück, beginnend bei der Zurücksetzungs Position.Therefore, ReadToEnd returns all the characters in the buffer plus the characters in the underlying stream starting from the reset position.

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-Objekt zurückzusetzen StreamReader .Use the DiscardBufferedData method to reset the internal buffer for the StreamReader object. Diese Methode muss nur aufgerufen werden, wenn die Position des internen Puffers und der nicht mit dem identisch BaseStream sind.You need to call this method only when the position of the internal buffer and the BaseStream do not match. Diese Positionen können nicht übereinstimmen, wenn Sie Daten in den Puffer einlesen und dann eine neue Position im zugrunde liegenden Stream suchen.These positions can become mismatched when you read data into the buffer and then seek a new position in the underlying stream. Diese Methode verlangsamt die Leistung und sollte nur verwendet werden, wenn dies unbedingt erforderlich ist, z. b. Wenn Sie einen Teil des Inhalts eines-Objekts mehrmals lesen möchten StreamReader .This method slows performance and should be used only when absolutely necessary, such as when you want to read a portion of the contents of a StreamReader object more than once.

Eine Liste der allgemeinen e/a-Aufgaben finden Sie unter Allgemeine e/a-Aufgaben.For a list of common I/O tasks, see Common I/O Tasks.

Gilt für: