BufferedStream.Read Méthode

Définition

Surcharges

Read(Span<Byte>)

Copie les octets depuis le flux mis en mémoire tampon actuel dans une plage d’octets et avance la position dans ce flux du nombre d’octets lus.Copies bytes from the current buffered stream to a byte span and advances the position within the buffered stream by the number of bytes read.

Read(Byte[], Int32, Int32)

Copie les octets du flux actuel figurant dans la mémoire tampon dans un tableau.Copies bytes from the current buffered stream to an array.

Read(Span<Byte>)

Copie les octets depuis le flux mis en mémoire tampon actuel dans une plage d’octets et avance la position dans ce flux du nombre d’octets lus.Copies bytes from the current buffered stream to a byte span and advances the position within the buffered stream by the number of bytes read.

public:
 override int Read(Span<System::Byte> destination);
public override int Read (Span<byte> destination);
override this.Read : Span<byte> -> int
Public Overrides Function Read (destination As Span(Of Byte)) As Integer

Paramètres

destination
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

Int32

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 nombre maximal d' buffer.Length octets à partir du flux actuel et les stockent dans buffer .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. Read retourne 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.

S’applique à

Read(Byte[], Int32, Int32)

Copie les octets du flux actuel figurant dans la mémoire tampon dans un tableau.Copies bytes from the current buffered stream to an array.

public:
 override int Read(cli::array <System::Byte> ^ array, int offset, int count);
public override int Read (byte[] array, int offset, int count);
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (array As Byte(), offset As Integer, count As Integer) As Integer

Paramètres

array
Byte[]

Mémoire tampon dans laquelle les octets sont copiés.The buffer to which bytes are to be copied.

offset
Int32

Dans la mémoire tampon, offset d’octet à partir duquel commence la lecture des octets.The byte offset in the buffer at which to begin reading bytes.

count
Int32

Nombre d'octets à lire.The number of bytes to be read.

Retours

Int32

Nombre total d’octets lus dans array.The total number of bytes read into array. Le total peut être inférieur au nombre d’octets demandé si ce nombre n’est pas actuellement disponible, ou il peut être égal à 0 si la fin du flux a été atteinte avant la lecture des données.This can be less than the number of bytes requested if that many bytes are not currently available, or 0 if the end of the stream has been reached before any data can be read.

Exceptions

La longueur de array moins offset est inférieure à count.Length of array minus offset is less than count.

array a la valeur null.array is null.

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

Le flux n’est pas ouvert ou bien il est null.The stream is not open or is null.

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

Cet exemple de code fait partie d’un exemple plus complet fourni pour la BufferedStream classe.This code example is part of a larger example provided for the BufferedStream class.

// Receive data using the BufferedStream.
Console::WriteLine(  "Receiving data using BufferedStream." );
bytesReceived = 0;
startTime = DateTime::Now;
while ( bytesReceived < numberOfLoops * receivedData->Length )
{
   bytesReceived += bufStream->Read( receivedData, 0, receivedData->Length );
}

bufferedTime = (DateTime::Now - startTime).TotalSeconds;
Console::WriteLine( "{0} bytes received in {1} seconds.\n", bytesReceived.ToString(), bufferedTime.ToString(  "F1" ) );

// Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.");
bytesReceived = 0;
startTime = DateTime.Now;

int numBytesToRead = receivedData.Length;

while (numBytesToRead > 0)
{
    // Read may return anything from 0 to numBytesToRead.
    int n = bufStream.Read(receivedData,0, receivedData.Length);
    // The end of the file is reached.
    if (n == 0)
        break;
    bytesReceived += n;
    numBytesToRead -= n;
}

bufferedTime = (DateTime.Now - startTime).TotalSeconds;
Console.WriteLine("{0} bytes received in {1} seconds.\n",
    bytesReceived.ToString(),
    bufferedTime.ToString("F1"));
' Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.")
bytesReceived = 0
startTime = DateTime.Now

Dim numBytesToRead As Integer = receivedData.Length
Dim n As Integer
Do While numBytesToRead > 0

    'Read my return anything from 0 to numBytesToRead
    n = bufStream.Read(receivedData, 0, receivedData.Length)
    'The end of the file is reached.
    If n = 0 Then
        Exit Do
    End If

    bytesReceived += n
    numBytesToRead -= n
Loop

bufferedTime = DateTime.Now.Subtract(startTime).TotalSeconds
Console.WriteLine("{0} bytes received in {1} " & _
    "seconds." & vbCrLf, _
    bytesReceived.ToString(), _
    bufferedTime.ToString("F1"))

Remarques

La Read méthode retourne 0 uniquement si la fin du flux est atteinte.The Read method will return 0 only if the end of the stream is reached. Dans tous les autres cas, Read lit toujours au moins un octet à partir du flux avant de retourner.In all other cases, Read always reads at least one byte from the stream before returning. Par définition, si aucune donnée n’est disponible à partir du flux lors d’un appel à Read , la Read méthode retourne 0 (la fin du flux est atteinte automatiquement).By definition, if no data is available from the stream upon a call to Read, the Read method returns 0 (the end of the stream is reached automatically). 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 à