Compartir por


Stream.Read Método

Definición

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

buffer
Span<Byte>

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.

Consulte también

Se aplica a