Partager via


Stream.Read Méthode

Définition

Surcharges

Nom Description
Read(Span<Byte>)

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 par le nombre d’octets lus.

Read(Byte[], Int32, Int32)

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 par le nombre d’octets lus.

Read(Span<Byte>)

Source:
Stream.cs
Source:
Stream.cs
Source:
Stream.cs
Source:
Stream.cs
Source:
Stream.cs

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 par le nombre d’octets lus.

public:
 virtual int Read(Span<System::Byte> buffer);
public virtual int Read(Span<byte> buffer);
abstract member Read : Span<byte> -> int
override this.Read : Span<byte> -> int
Public Overridable Function Read (buffer As Span(Of Byte)) As Integer

Paramètres

buffer
Span<Byte>

Une région de mémoire. Lorsque cette méthode est retournée, le contenu de cette région est remplacé par les octets lus à partir de la source actuelle.

Retours

Nombre total d’octets lus dans la mémoire tampon. Cela peut être inférieur à la taille de la mémoire tampon si de nombreux octets ne sont pas actuellement disponibles, ou zéro (0) si la longueur de la mémoire tampon est égale à zéro ou que la fin du flux a été atteinte.

Remarques

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

Les implémentations de cette méthode lisent un maximum d’octets buffer.Length à partir du flux actuel et les stockent dans buffer. La position actuelle dans le flux est avancée par le nombre d’octets lus ; Toutefois, si une exception se produit, la position actuelle dans le flux reste inchangée. Les implémentations retournent le nombre d’octets lus. Si plus de zéro octets sont demandés, l’implémentation ne termine pas l’opération tant qu’au moins un octet de données peut être lu (si zéro octets a été demandé, certaines implémentations peuvent ne pas se terminer tant qu’au moins un octet n’est pas disponible, mais aucune donnée ne sera consommée à partir du flux dans ce cas). Read retourne 0 uniquement si zéro octets a été demandé ou lorsqu’il n’y a plus de données dans le flux et qu’aucun autre n’est attendu (par exemple, un socket fermé ou une fin de fichier). Une implémentation est libre de retourner moins d’octets que demandés même si la fin du flux n’a pas été atteinte.

Permet BinaryReader de lire les types de données primitifs.

S’applique à

Read(Byte[], Int32, Int32)

Source:
Stream.cs
Source:
Stream.cs
Source:
Stream.cs
Source:
Stream.cs
Source:
Stream.cs

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 par le nombre d’octets lus.

public:
 abstract int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public abstract int Read(byte[] buffer, int offset, int count);
abstract member Read : byte[] * int * int -> int
Public MustOverride Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer

Paramètres

buffer
Byte[]

Tableau d’octets. Lorsque cette méthode est retournée, la mémoire tampon contient le tableau d’octets spécifié avec les valeurs comprises entre offset et (offset + count - 1) remplacées par les octets lus à partir de la source actuelle.

offset
Int32

Décalage d’octet de base zéro dans buffer lequel commencer le stockage des données lues à partir du flux actuel.

count
Int32

Nombre maximal d’octets à lire à partir du flux actuel.

Retours

Nombre total d’octets lus dans la mémoire tampon. Cela peut être inférieur au nombre d’octets demandé si de nombreux octets ne sont pas actuellement disponibles, ou zéro (0) si count 0 ou la fin du flux a été atteinte.

Exceptions

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

buffer a la valeur null.

offset ou count est négatif.

Une erreur d’E/S se produit.

Le flux ne prend pas en charge la lecture.

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

Exemples

L’exemple suivant montre comment lire Read 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);
    }
}
Imports System.IO

Public Class Block
    Public Shared Sub Main()
        Dim s As Stream = New MemoryStream()
        For i As Integer = 0 To 121
            s.WriteByte(CType(i, Byte))
        Next i
        s.Position = 0

        ' Now read s into a byte buffer that is padded slightly.
        Dim bytes(s.Length + 10) As Byte
        Dim numBytesToRead As Integer = s.Length
        Dim numBytesRead As Integer = 0
        Dim n As Integer
        Do
            ' Read may return anything from 0 to 10.
            n = s.Read(bytes, numBytesRead, 10)
            ' The end of the file is reached.
            numBytesRead += n
            numBytesToRead -= n
        Loop While numBytesToRead > 0

        s.Close()
    
        Console.WriteLine("number of bytes read: {0:d}", numBytesRead)
    End Sub
End Class

Remarques

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

Les implémentations de cette méthode lisent un maximum d’octets count à partir du flux actuel et les stockent en buffer commençant à offset. La position actuelle dans le flux est avancée par le nombre d’octets lus ; Toutefois, si une exception se produit, la position actuelle dans le flux reste inchangée. Les implémentations retournent le nombre d’octets lus. Si plus de zéro octets sont demandés, l’implémentation ne termine pas l’opération tant qu’au moins un octet de données ne peut pas être lu (certaines implémentations peuvent ne pas être terminées tant qu’au moins un octet n’est pas disponible même si aucun octet n’a été demandé, mais aucune donnée ne sera consommée à partir du flux dans ce cas). Read retourne 0 uniquement si zéro octets a été demandé ou lorsqu’il n’y a plus de données dans le flux et qu’aucun autre n’est attendu (par exemple, un socket fermé ou une fin de fichier). Une implémentation est libre de retourner moins d’octets que demandés même si la fin du flux n’a pas été atteinte.

Permet BinaryReader de lire les types de données primitifs.

Voir aussi

S’applique à