StreamReader.DiscardBufferedData Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Efface la mémoire tampon interne.
public:
void DiscardBufferedData();
public void DiscardBufferedData ();
member this.DiscardBufferedData : unit -> unit
Public Sub DiscardBufferedData ()
Exemples
L’exemple suivant montre un scénario où la DiscardBufferedData méthode doit être appelée pour synchroniser la mémoire tampon interne et le flux sous-jacent. Le fichier de l’exemple est utilisé pour illustrer la position et se compose du texte abcdefghijklmnopqrstuvwxyz
. En appelant DiscardBufferedData une fois les données lues, l’exemple fonctionne comme prévu. Une fois les 15 premiers caractères lus, la position est réinitialisée à la valeur de décalage de 2 et tous les caractères restants sont lus. Si vous supprimez l’appel à DiscardBufferedData, l’exemple ne fonctionne pas comme prévu. Les 15 premiers caractères sont lus, mais seule la position du flux sous-jacent est réinitialisée. La mémoire tampon interne de l’objet StreamReader se trouve toujours sur le 16e caractère. 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.
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’objet StreamReader . Vous devez appeler cette méthode uniquement lorsque la position de la mémoire tampon interne et le BaseStream ne correspondent pas. Ces positions peuvent devenir incompatibles lorsque vous lisez des données dans la mémoire tampon, puis que vous recherchez une nouvelle position dans le flux sous-jacent. Cette méthode ralentit les performances et ne doit être utilisée que lorsque cela est absolument nécessaire, par exemple lorsque vous souhaitez lire plusieurs fois une partie du contenu d’un StreamReader objet.
Pour obtenir la liste des tâches d’E/S courantes, consultez Tâches courantes d’E/S.