Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Stream.Read méthode (Byte[], Int32, Int32)

 

Date de publication : novembre 2016

En cas de remplacement dans une classe dérivée, lit une séquence d'octets dans le 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
)

Paramètres

buffer
Type: System.Byte[]

Tableau d'octets. Quand cette méthode retourne un résultat, la mémoire tampon contient le tableau d'octets spécifié dont les valeurs comprises entre offset et (offsetcount - 1) sont remplacées par les octets lus dans la source actuelle.

offset
Type: System.Int32

Dans buffer, décalage d'octet de base zéro auquel commencer le stockage des données lues dans le flux actuel.

count
Type: System.Int32

Nombre maximal d'octets à lire dans le flux actuel.

Valeur de retour

Type: System.Int32

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

Exception Condition
ArgumentException

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

ArgumentNullException

buffer a la valeur null.

ArgumentOutOfRangeException

offset ou count est un nombre négatif.

IOException

Une erreur d’E/S se produit.

NotSupportedException

Le flux ne prend pas en charge la lecture.

ObjectDisposedException

Des méthodes ont été appelées après la fermeture du flux.

Utilisez le CanRead propriété pour déterminer si l’instance actuelle prend en charge la lecture. Utilisez la ReadAsync méthode pour lire de façon asynchrone à partir du flux actuel.

Les implémentations de cette méthode lisent un maximum de count octets depuis le flux et les stocker dans buffer commençant à offset. La position actuelle dans le flux est avancée du nombre d’octets lus ; Toutefois, si une exception se produit, la position actuelle dans le flux demeure inchangée. Implémentations retournent le nombre d’octets lus. L’implémentation sera bloqué jusqu'à ce qu’au moins un octet de données peut être lu, si aucune donnée n’est disponible. Readretourne 0 uniquement lorsqu’il n’existe aucune donnée dans le flux et n’est attendue (par exemple, un socket fermé ou la fin du fichier). Une implémentation est libre de retourner moins d’octets que demandé même si la fin du flux n’a pas été atteint.

Utilisez BinaryReader pour lire les 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 < 122; i++)
        {
            s.WriteByte((byte)i);
        }
        s.Position = 0;

        // Now read s into a byte buffer with a little padding.
        byte[] bytes = new byte[s.Length + 10];
        int numBytesToRead = (int)s.Length;
        int numBytesRead = 0;
        do
        {
            // Read may return anything from 0 to 10.
            int n = s.Read(bytes, numBytesRead, 10);
            numBytesRead += n;
            numBytesToRead -= n;
        } while (numBytesToRead > 0);
        s.Close();

        Console.WriteLine("number of bytes read: {0:d}", numBytesRead);
    }
}

Plateforme Windows universelle
Disponible depuis 8
.NET Framework
Disponible depuis 1.1
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Windows Phone
Disponible depuis 8.1
Retour au début
Afficher: