Stream.Read Stream.Read Stream.Read Stream.Read Method

Définition

Surcharges

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>)

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.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32)

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.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>)

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.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

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>

Région de la mémoire.A region of memory. Quand cette méthode est retournée, le contenu de cette région est remplacé par les octets lus dans la source actuelle.When this method returns, the contents of this region are replaced by the bytes read from the current source.

Retours

Nombre total d'octets lus dans la mémoire tampon.The total number of bytes read into the buffer. Le nombre d’octets peut être inférieur au nombre d’octets alloués dans la mémoire tampon si ce nombre d’octets n’est pas actuellement disponible, ou égal à zéro (0) si la fin du flux a été atteinte.This can be less than the number of bytes allocated in the buffer if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.

Remarques

Utilisez la CanRead propriété pour déterminer si l’instance actuelle prend en charge la lecture.Use the CanRead property to determine whether the current instance supports reading. Utilisez la ReadAsync méthode pour lire de façon asynchrone à partir du flux actuel.Use the ReadAsync method to read asynchronously from the current stream.

Les implémentations de cette méthode lisent un buffer.Length nombre maximal d’octets à partir du flux actuel bufferet les stockent dans.Implementations of this method read a maximum of buffer.Length bytes from the current stream and store them in buffer. 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 reste inchangée.The current position within the stream is advanced by the number of bytes read; however, if an exception occurs, the current position within the stream remains unchanged. Les implémentations retournent le nombre d’octets lus.Implementations return the number of bytes read. L’implémentation se bloque jusqu’à ce qu’au moins un octet de données puisse être lu, dans le cas où aucune donnée n’est disponible.The implementation will block until at least one byte of data can be read, in the event that no data is available. Readretourne 0 uniquement lorsqu’il n’y a plus de données dans le flux et qu’il n’y a plus de données attendues (par exemple, un socket fermé ou une fin de fichier).Read returns 0 only when there is no more data in the stream and no more is expected (such as a closed socket or end of file). Une implémentation est libre de retourner moins d’octets que la demande, même si la fin du flux n’a pas été atteinte.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Utilisez BinaryReader pour lire les types de données primitifs.Use BinaryReader for reading primitive data types.

Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32)

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.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

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.An array of bytes. Quand cette méthode se termine, 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 actuelle.When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source.

offset
Int32 Int32 Int32 Int32

Dans buffer, décalage d'octet de base zéro auquel commencer le stockage des données lues dans le flux actuel.The zero-based byte offset in buffer at which to begin storing the data read from the current stream.

count
Int32 Int32 Int32 Int32

Nombre maximal d'octets à lire dans le flux actuel.The maximum number of bytes to be read from the current stream.

Retours

Nombre total d'octets lus dans la mémoire tampon.The total number of bytes read into the buffer. 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.This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.

Exceptions

La somme de offset et count est supérieure à la longueur de la mémoire tampon.The sum of offset and count is larger than the buffer length.

offset ou count est un nombre négatif.offset or count is negative.

Une erreur d’E/S se produit.An I/O error occurs.

Le flux ne prend pas en charge la lecture.The stream does not support reading.

Des méthodes ont été appelées après la fermeture du flux.Methods were called after the stream was closed.

Exemples

L’exemple suivant montre comment utiliser Read pour lire un bloc de données.The following example shows how to use Read to read a block of data.

using namespace System;
using namespace System::IO;

public ref class Block
{
public:
    static void Main()
    {
        Stream^ s = gcnew MemoryStream();
        for (int i = 0; i < 100; i++)
        {
            s->WriteByte((Byte)i);
        }
        s->Position = 0;

        // Now read s into a byte buffer.
        array<Byte>^ bytes = gcnew array<Byte>(s->Length);
        int numBytesToRead = (int) s->Length;
        int numBytesRead = 0;
        while (numBytesToRead > 0)
        {
            // Read may return anything from 0 to 10.
            int n = s->Read(bytes, numBytesRead, 10);
            // 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: {0:d}", numBytesRead);
    }
};

int main()
{
    Block::Main();
}
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
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.Use the CanRead property to determine whether the current instance supports reading. Utilisez la ReadAsync méthode pour lire de façon asynchrone à partir du flux actuel.Use the ReadAsync method to read asynchronously from the current stream.

Les implémentations de cette méthode lisent un count nombre maximal d’octets à partir du flux actuel buffer et les offsetstockent à partir de.Implementations of this method read a maximum of count bytes from the current stream and store them in buffer beginning at 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 reste inchangée.The current position within the stream is advanced by the number of bytes read; however, if an exception occurs, the current position within the stream remains unchanged. Les implémentations retournent le nombre d’octets lus.Implementations return the number of bytes read. L’implémentation se bloque jusqu’à ce qu’au moins un octet de données puisse être lu, dans le cas où aucune donnée n’est disponible.The implementation will block until at least one byte of data can be read, in the event that no data is available. Readretourne 0 uniquement lorsqu’il n’y a plus de données dans le flux et qu’il n’y a plus de données attendues (par exemple, un socket fermé ou une fin de fichier).Read returns 0 only when there is no more data in the stream and no more is expected (such as a closed socket or end of file). Une implémentation est libre de retourner moins d’octets que la demande, même si la fin du flux n’a pas été atteinte.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Utilisez BinaryReader pour lire les types de données primitifs.Use BinaryReader for reading primitive data types.

Voir aussi

S’applique à