Cette documentation est archivée et n’est pas conservée.

Stream.Read, méthode

Mise à jour : novembre 2007

En cas de substitution dans une classe dérivée, lit une séquence d'octets à partir du flux actuel et avance la position dans le flux du nombre d'octets lus.

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

public abstract int Read(
	byte[] buffer,
	int offset,
	int count
)
public abstract int Read(
	/** @attribute InAttribute */ /** @attribute OutAttribute */ byte[] buffer,
	int offset,
	int count
)
public abstract function Read(
	buffer : byte[], 
	offset : int, 
	count : int
) : int

Paramètres

buffer
Type : System.Byte[]
Tableau d'octets. Lorsque cette méthode est retournée, la mémoire tampon contient le tableau d'octets spécifié dont les valeurs comprises entre offset et (offset + count - 1) sont remplacées par les octets lus dans la source en cours.
offset
Type : System.Int32
Dans buffer, offset d'octet de base zéro à partir duquel commencer l'enregistrement des données lues dans le flux en cours.
count
Type : System.Int32
Nombre maximal d'octets à lire à partir du flux actuel.

Valeur de retour

Type : System.Int32
Nombre total d'octets lus dans la mémoire tampon. Cela peut être inférieur au nombre d'octets demandé si ce nombre n'est pas actuellement disponible ou égal à zéro (0) si la fin du flux a été atteinte.

ExceptionCondition
ArgumentException

La somme de offset et de count est supérieure à la longueur de la mémoire tampon.

ArgumentNullException

buffer a la valeur null.

ArgumentOutOfRangeException

offset ou count est négatif.

IOException

Une erreur d'E/S s'est produite.

NotSupportedException

Le flux ne prend pas en charge la lecture.

ObjectDisposedException

Des méthodes ont été appelées après que le flux a été fermé.

Pour obtenir un exemple de création de fichier et d'écriture de texte dans un fichier, consultez Comment : écrire du texte dans un fichier. Pour obtenir un exemple de lecture de texte à partir d'un fichier, consultez Comment : lire du texte dans un fichier. Pour obtenir un exemple de lecture et d'écriture dans un fichier binaire, consultez Comment : lire et écrire dans un fichier de données créé récemment.

Utilisez la propriété CanRead pour déterminer si l'instance actuelle prend en charge la lecture.

Les implémentations de cette méthode lisent un maximum de count octets à partir du flux en cours et les stockent dans buffer en commençant à offset. La position actuelle dans le flux est avancée du nombre d'octets lus ; cependant, en cas d'exception, la position demeure inchangée. Les implémentations retournent le nombre d'octets lus. La valeur de retour est zéro si la position actuelle est à la fin du flux. L'implémentation est bloquée jusqu'à ce qu'au moins un octet de données puisse être lu, dans le cas où aucune données n'est disponible. Read retourne 0 uniquement lorsqu'il n'y a plus de données dans le flux et qu'aucune autre n'est attendue (par exemple, socket fermé ou fin de fichier). Une implémentation est libre de retourner moins d'octets que le nombre demandé si la fin du flux n'a pas été atteinte.

Utilisez BinaryReader pour la lecture des types de données primitifs.

L'exemple suivant montre comment utiliser Read pour lire un bloc de données.

using System;
using System.IO;

public class Block
{
    public static void Main()
    {
        Stream s = new MemoryStream();
        for (int i=0; i<100; i++)
            s.WriteByte((byte)i);
        s.Position = 0;

        // Now read s into a byte buffer.
        byte[] bytes = new byte[s.Length];
        int numBytesToRead = (int) s.Length;
        int numBytesRead = 0;
        while (numBytesToRead > 0) 
        {
            // Read may return anything from 0 to numBytesToRead.
            int n = s.Read(bytes, numBytesRead, numBytesToRead);
            // The end of the file is reached.
            if (n==0)
                break;
            numBytesRead += n;
            numBytesToRead -= n;
        }
        s.Close();
        // numBytesToRead should be 0 now, and numBytesRead should
        // equal 100.
        Console.WriteLine("number of bytes read: "+numBytesRead);
    }
}


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile pour Smartphone, Windows Mobile pour Pocket PC, Xbox 360

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

.NET Framework

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

.NET Compact Framework

Pris en charge dans : 3.5, 2.0, 1.0

XNA Framework

Pris en charge dans : 2.0, 1.0
Afficher: