Stream.Read Stream.Read Stream.Read Stream.Read Method

Definición

Sobrecargas

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) 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.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) 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.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) 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.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

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>

Región de memoria.A region of memory. Cuando este método finaliza, el contenido de esta región se reemplaza por los bytes leídos del origen actual.When this method returns, the contents of this region are replaced by the bytes read from the current source.

Devoluciones

Número total de bytes leídos en el búfer.The total number of bytes read into the buffer. Puede ser menor que el número de bytes asignado en el búfer si esos bytes no están disponibles en ese momento o cero (0) si se ha alcanzado el final de la secuencia.This can be less than the number of bytes allocated in the buffer if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.

Comentarios

Utilice la CanRead propiedad para determinar si la instancia actual admite operaciones de lectura.Use the CanRead property to determine whether the current instance supports reading. Use el ReadAsync método para leer de forma asincrónica desde la secuencia actual.Use the ReadAsync method to read asynchronously from the current stream.

Las implementaciones de este método leen un máximo buffer.Length de bytes de la secuencia actual y los almacenan en. bufferImplementations of this method read a maximum of buffer.Length bytes from the current stream and store them in buffer. La posición actual dentro de la secuencia se avanza 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.The current position within the stream is advanced by the number of bytes read; however, if an exception occurs, the current position within the stream remains unchanged. Las implementaciones devuelven el número de bytes leídos.Implementations return the number of bytes read. La implementación se bloqueará hasta que se pueda leer al menos un byte de datos, en caso de que no haya datos disponibles.The implementation will block until at least one byte of data can be read, in the event that no data is available. Readdevuelve 0 solo 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).Read returns 0 only when there is no more data in the stream and no more is expected (such as a closed socket or end of file). Una implementación es gratuita para devolver menos bytes de los solicitados, incluso si no se ha alcanzado el final de la secuencia.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Se BinaryReader usa para leer los tipos de datos primitivos.Use BinaryReader for reading primitive data types.

Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) 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.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

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.An array of 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.When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source.

offset
Int32 Int32 Int32 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.The zero-based byte offset in buffer at which to begin storing the data read from the current stream.

count
Int32 Int32 Int32 Int32

Número máximo de bytes que se deben leer de la secuencia actual.The maximum number of bytes to be read from the current stream.

Devoluciones

Número total de bytes leídos en el búfer.The total number of bytes read into the buffer. Puede ser menor que el número de bytes solicitado si dicho número no está disponible, o puede ser cero (0) si se alcanza el final de la secuencia.This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.

Excepciones

La suma de offset y count es mayor que la longitud del búfer.The sum of offset and count is larger than the buffer length.

Error de E/S.An I/O error occurs.

La secuencia no admite lectura.The stream does not support reading.

Se efectuó una llamada a los métodos después de cerrar la secuencia.Methods were called after the stream was closed.

Ejemplos

En el ejemplo siguiente se muestra cómo Read usar para leer un bloque de datos.The following example shows how to use Read to read a block of data.

using namespace System;
using namespace System::IO;

public ref class Block
{
public:
    static void Main()
    {
        Stream^ s = gcnew MemoryStream();
        for (int i = 0; i < 100; i++)
        {
            s->WriteByte((Byte)i);
        }
        s->Position = 0;

        // Now read s into a byte buffer.
        array<Byte>^ bytes = gcnew array<Byte>(s->Length);
        int numBytesToRead = (int) s->Length;
        int numBytesRead = 0;
        while (numBytesToRead > 0)
        {
            // Read may return anything from 0 to 10.
            int n = s->Read(bytes, numBytesRead, 10);
            // The end of the file is reached.
            if (n == 0)
            {
                break;
            }
            numBytesRead += n;
            numBytesToRead -= n;
        }
        s->Close();
        // numBytesToRead should be 0 now, and numBytesRead should
        // equal 100.
        Console::WriteLine("number of bytes read: {0:d}", numBytesRead);
    }
};

int main()
{
    Block::Main();
}
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

Utilice la CanRead propiedad para determinar si la instancia actual admite operaciones de lectura.Use the CanRead property to determine whether the current instance supports reading. Use el ReadAsync método para leer de forma asincrónica desde la secuencia actual.Use the ReadAsync method to read asynchronously from the current stream.

Las implementaciones de este método leen un máximo count de bytes de la secuencia actual y los almacenan buffer a offsetpartir de.Implementations of this method read a maximum of count bytes from the current stream and store them in buffer beginning at offset. La posición actual dentro de la secuencia se avanza 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.The current position within the stream is advanced by the number of bytes read; however, if an exception occurs, the current position within the stream remains unchanged. Las implementaciones devuelven el número de bytes leídos.Implementations return the number of bytes read. La implementación se bloqueará hasta que se pueda leer al menos un byte de datos, en caso de que no haya datos disponibles.The implementation will block until at least one byte of data can be read, in the event that no data is available. Readdevuelve 0 solo 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).Read returns 0 only when there is no more data in the stream and no more is expected (such as a closed socket or end of file). Una implementación es gratuita para devolver menos bytes de los solicitados, incluso si no se ha alcanzado el final de la secuencia.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Se BinaryReader usa para leer los tipos de datos primitivos.Use BinaryReader for reading primitive data types.

Consulte también:

Se aplica a