Leer en inglés

Compartir a través de


Stream.Read Método

Definición

Sobrecargas

Read(Span<Byte>)

Cuando se reemplaza en una clase derivada, se lee una secuencia de bytes en la secuencia actual y se hace avanzar la posición dentro de la secuencia el número de bytes leídos.

Read(Byte[], Int32, Int32)

Cuando se reemplaza en una clase derivada, se lee una secuencia de bytes en la secuencia actual y se hace avanzar la posición dentro de la secuencia el número de bytes leídos.

Read(Span<Byte>)

Source:
Stream.cs
Source:
Stream.cs
Source:
Stream.cs

Cuando se reemplaza en una clase derivada, se lee una secuencia de bytes en la secuencia actual y se hace avanzar la posición dentro de la secuencia el número de bytes leídos.

C#
public virtual int Read (Span<byte> buffer);

Parámetros

buffer
Span<Byte>

Región de memoria. Cuando este método finaliza, 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 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 (por ejemplo, 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

.NET 9 y otras versiones
Producto Versiones
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

Read(Byte[], Int32, Int32)

Source:
Stream.cs
Source:
Stream.cs
Source:
Stream.cs

Cuando se reemplaza en una clase derivada, se lee una secuencia de bytes en la secuencia actual y se hace avanzar la posición dentro de la secuencia el número de bytes leídos.

C#
public abstract int Read (byte[] buffer, int offset, int count);

Parámetros

buffer
Byte[]

Matriz de bytes. Cuando este método devuelve un valor, el búfer contiene la matriz de bytes especificada con valores entre offset y (offset + count - 1) reemplazada por los bytes leídos del origen actual.

offset
Int32

Posición de desplazamiento en bytes de base cero de buffer donde se comienza a almacenar los datos leídos de la secuencia actual.

count
Int32

Número máximo de bytes que se deben leer de 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.

Error de E/S.

La secuencia no admite lectura.

Se efectuó una llamada 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.

C#
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);
    }
}

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 aunque se hayan solicitado 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 (por ejemplo, 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.

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0