BufferedStream.Read(Byte[], Int32, Int32) Méthode

Définition

Copie les octets du flux mis en mémoire tampon actuelle dans un tableau.

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 vers laquelle les octets doivent être copiés.

offset
Int32

Décalage d’octet dans la mémoire tampon à partir duquel commencer la lecture d’octets.

count
Int32

Nombre d’octets à lire.

Retours

Nombre total d’octets lus en array. Cela peut être inférieur au nombre d’octets demandé si de nombreux octets ne sont pas actuellement disponibles, ou 0 si la fin du flux a été atteinte avant que toutes les données puissent être lues.

Exceptions

La longueur de array moins offset est inférieure à count.

array a la valeur null.

offset ou count est négatif.

Le flux n’est pas ouvert ou n’est nullpas .

Le flux ne prend pas en charge la lecture.

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

Exemples

Cet exemple de code fait partie d’un exemple plus grand fourni pour la BufferedStream classe.

// 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.
printfn "Receiving data using BufferedStream."
bytesReceived <- 0
let startTime = DateTime.Now

let mutable numBytesToRead = receivedData.Length

let mutable broken = false
while not broken && numBytesToRead > 0 do
    // Read may return anything from 0 to numBytesToRead.
    let n = bufStream.Read(receivedData,0, receivedData.Length)
    // The end of the file is reached.
    if n = 0 then
        broken <- true
    else
        bytesReceived <- bytesReceived + n
        numBytesToRead <- numBytesToRead - n

let bufferedTime = (DateTime.Now - startTime).TotalSeconds
printfn $"{bytesReceived} bytes received in {bufferedTime:F1} seconds.\n"
' 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. Dans tous les autres cas, Read lit toujours au moins un octet du flux avant de retourner. Par définition, si aucune donnée n’est disponible à partir du flux lors d’un appel, Readla Read méthode retourne 0 (la fin du flux est atteinte automatiquement). 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 à

Voir aussi