Stream.Read 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.
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
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
- E/S de fichier et de flux
- Guide pratique pour lire du texte à partir d’un fichier
- Guide pratique pour écrire du texte dans un fichier