Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

StreamReader.DiscardBufferedData, méthode

Efface la mémoire tampon interne.

Espace de noms :  System.IO
Assembly :  mscorlib (dans mscorlib.dll)
public void DiscardBufferedData()

Utilisez la méthode DiscardBufferedData 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 être assorties de manière incorrecte lorsque vous lisez des données dans la mémoire tampon et que vous recherchez une nouvelle position dans le flux sous-jacent. Cette méthode ralentit les performances et doit être utilisée uniquement en cas d'absolue nécessité, notamment lorsque vous souhaitez lire plusieurs fois une partie du contenu d'un objet StreamReader.

Pour obtenir la liste des tâches d'E/S courantes, consultez Tâches d'E/S courantes.

L'exemple suivant affiche un scénario dans laquelle la méthode DiscardBufferedData doit être appelée pour synchroniser la mémoire tampon interne et le flux sous-jacent. Le fichier dans l'exemple est utilisé pour illustrer la position et se compose de l' abcdefghijklmnopqrstuvwxyz du texte. En appelant DiscardBufferedData une fois les données lues, l'exemple fonctionne comme prévu. Une fois que les 15 premiers caractères sont 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 attendu. 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 est encore sur le 16e caractère. Par conséquent, ReadToEnd retourne tous les caractères dans la mémoire tampon plus les caractères dans le flux sous-jacent qui démarre à partir de la position de remise à zéro.


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"
        }
    }
}


.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Pris en charge dans :

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Date

Historique

Motif

Décembre 2010

Exemple et clarifications ajoutés sur le moment où appeler DiscardBufferedData.

Commentaires client.

Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ