BufferedStream.Read(Byte[], Int32, Int32) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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.