StreamReader.DiscardBufferedData Méthode

Définition

Efface la mémoire tampon interne.Clears the internal buffer.

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

Exemples

L’exemple suivant montre un scénario dans lequel la DiscardBufferedData méthode doit être appelée pour synchroniser la mémoire tampon interne et le flux sous-jacent.The following example shows a scenario where the DiscardBufferedData method must be called to synchronize the internal buffer and the underlying stream. Le fichier dans l’exemple est utilisé pour illustrer la position et se compose du texte abcdefghijklmnopqrstuvwxyz .The file in the example is used to illustrate position and consists of the text abcdefghijklmnopqrstuvwxyz. En appelant DiscardBufferedData une fois les données lues, l’exemple fonctionne comme prévu.By calling DiscardBufferedData after the data is read, the example works as expected. Une fois les 15 premiers caractères lus, la position est réinitialisée à la valeur de décalage 2 et tous les caractères restants sont lus.After the first 15 characters are read, the position is reset to the offset value of 2 and all the remaining characters are read. Si vous supprimez l’appel à DiscardBufferedData , l’exemple ne fonctionne pas comme prévu.If you remove the call to DiscardBufferedData, the example does not work as expected. Les 15 premiers caractères sont lus, mais seule la position du flux sous-jacent est réinitialisée.The first 15 characters are read, but only the position of the underlying stream is reset. La mémoire tampon interne de l' StreamReader objet est toujours sur le 16ème caractère.The internal buffer of the StreamReader object is still on the 16th character. Par conséquent, ReadToEnd retourne tous les caractères de la mémoire tampon plus les caractères du flux sous-jacent à partir de la position de réinitialisation.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

Remarques

Utilisez la DiscardBufferedData méthode pour réinitialiser la mémoire tampon interne de l' StreamReader objet.Use the DiscardBufferedData method to reset the internal buffer for the StreamReader object. Vous devez appeler cette méthode uniquement lorsque la position de la mémoire tampon interne et le BaseStream ne correspondent pas.You need to call this method only when the position of the internal buffer and the BaseStream do not match. Ces positions peuvent devenir incompatibles lorsque vous lisez des données dans la mémoire tampon, puis rechercher une nouvelle position dans le flux sous-jacent.These positions can become mismatched when you read data into the buffer and then seek a new position in the underlying stream. Cette méthode ralentit les performances et doit être utilisée uniquement en cas de nécessité absolue, par exemple lorsque vous souhaitez lire plusieurs fois une partie du contenu d’un StreamReader objet.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.

Pour obtenir la liste des tâches d’e/s courantes, consultez tâches d’e/s courantes.For a list of common I/O tasks, see Common I/O Tasks.

S’applique à

Voir aussi