Stream.Read Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Sobrecargas
| Nombre | Description |
|---|---|
| Read(Span<Byte>) |
Cuando se reemplaza en una clase derivada, lee una secuencia de bytes de la secuencia actual y avanza la posición dentro de la secuencia por el número de bytes leídos. |
| Read(Byte[], Int32, Int32) |
Cuando se reemplaza en una clase derivada, lee una secuencia de bytes de la secuencia actual y avanza la posición dentro de la secuencia por el número de bytes leídos. |
Read(Span<Byte>)
- Source:
- Stream.cs
- Source:
- Stream.cs
- Source:
- Stream.cs
- Source:
- Stream.cs
- Source:
- Stream.cs
Cuando se reemplaza en una clase derivada, lee una secuencia de bytes de la secuencia actual y avanza la posición dentro de la secuencia por el número de bytes leídos.
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
Parámetros
Una región de memoria. Cuando este método devuelve, el contenido de esta región se reemplaza por los bytes leídos del origen actual.
Devoluciones
Número total de bytes leídos en el búfer. Esto puede ser menor que el tamaño del búfer si no hay muchos bytes disponibles actualmente, o cero (0) si la longitud del búfer es cero o se ha alcanzado el final de la secuencia.
Comentarios
Use la CanRead propiedad para determinar si la instancia actual admite la lectura. Use el ReadAsync método para leer de forma asincrónica desde la secuencia actual.
Las implementaciones de este método leen un máximo de buffer.Length bytes de la secuencia actual y las almacenan en buffer. La posición actual dentro de la secuencia está avanzada por el número de bytes leídos; sin embargo, si se produce una excepción, la posición actual dentro de la secuencia permanece sin cambios. Las implementaciones devuelven el número de bytes leídos. Si se solicitan más de cero bytes, la implementación no completará la operación hasta que se pueda leer al menos un byte de datos (si se solicitó cero bytes, es posible que algunas implementaciones no se completen de forma similar hasta que haya al menos un byte disponible, pero no se consumirán datos de la secuencia en este caso).
Read devuelve 0 solo si se solicitaron cero bytes o cuando no hay más datos en la secuencia y no se espera más (como un socket cerrado o el final del archivo). Una implementación es libre para devolver menos bytes de los solicitados incluso si no se ha alcanzado el final de la secuencia.
Se usa BinaryReader para leer tipos de datos primitivos.
Se aplica a
Read(Byte[], Int32, Int32)
- Source:
- Stream.cs
- Source:
- Stream.cs
- Source:
- Stream.cs
- Source:
- Stream.cs
- Source:
- Stream.cs
Cuando se reemplaza en una clase derivada, lee una secuencia de bytes de la secuencia actual y avanza la posición dentro de la secuencia por el número de bytes leídos.
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
Parámetros
- buffer
- Byte[]
Matriz de bytes. Cuando este método devuelve, el búfer contiene la matriz de bytes especificada con los valores entre offset y (offset + count - 1) reemplazados por los bytes leídos del origen actual.
- offset
- Int32
Desplazamiento de bytes de base cero en el buffer que se van a empezar a almacenar los datos leídos de la secuencia actual.
- count
- Int32
Número máximo de bytes que se van a leer desde la secuencia actual.
Devoluciones
Número total de bytes leídos en el búfer. Esto puede ser menor que el número de bytes solicitados si no hay muchos bytes disponibles actualmente, o cero (0) si count es 0 o el final de la secuencia se ha alcanzado.
Excepciones
La suma de offset y count es mayor que la longitud del búfer.
buffer es null.
offset o count es negativo.
Se produce un error de E/S.
La secuencia no admite la lectura.
Se llamó a los métodos después de cerrar la secuencia.
Ejemplos
En el ejemplo siguiente se muestra cómo usar Read para leer un bloque de datos.
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
Comentarios
Use la CanRead propiedad para determinar si la instancia actual admite la lectura. Use el ReadAsync método para leer de forma asincrónica desde la secuencia actual.
Las implementaciones de este método leen un máximo de count bytes de la secuencia actual y las almacenan a buffer partir offsetde . La posición actual dentro de la secuencia está avanzada por el número de bytes leídos; sin embargo, si se produce una excepción, la posición actual dentro de la secuencia permanece sin cambios. Las implementaciones devuelven el número de bytes leídos. Si se solicitan más de cero bytes, la implementación no completará la operación hasta que se pueda leer al menos un byte de datos (es posible que algunas implementaciones no se completen de forma similar hasta que al menos un byte esté disponible incluso si se solicitó cero bytes, pero no se consumirán datos de la secuencia en ese caso).
Read devuelve 0 solo si se solicitaron cero bytes o cuando no hay más datos en la secuencia y no se espera más (como un socket cerrado o el final del archivo). Una implementación es libre para devolver menos bytes de los solicitados incluso si no se ha alcanzado el final de la secuencia.
Se usa BinaryReader para leer tipos de datos primitivos.