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

Definição

Sobrecargas

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>)

Quando for substituído em uma classe derivada, lê uma sequência de bytes do fluxo atual e avança a posição dentro do fluxo até o número de bytes lidos.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)

Quando for substituído em uma classe derivada, lê uma sequência de bytes do fluxo atual e avança a posição dentro do fluxo até o número de bytes lidos.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>)

Quando for substituído em uma classe derivada, lê uma sequência de bytes do fluxo atual e avança a posição dentro do fluxo até o número de bytes lidos.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>

Uma região da memória.A region of memory. Quando este método retorna, o conteúdo desta região é substituído pelos bytes lidos da fonte atual.When this method returns, the contents of this region are replaced by the bytes read from the current source.

Retornos

O número total de bytes lidos do buffer.The total number of bytes read into the buffer. Isso poderá ser menor que o número de bytes alocados no buffer se esses muitos bytes não estiverem disponíveis no momento, ou zero (0), se o final do fluxo tiver sido atingido.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.

Comentários

Use a CanRead propriedade para determinar se a instância atual oferece suporte à leitura.Use the CanRead property to determine whether the current instance supports reading. Use o ReadAsync método para ler de forma assíncrona o fluxo atual.Use the ReadAsync method to read asynchronously from the current stream.

As implementações desse método lêem um máximo buffer.Length de bytes do fluxo atual e bufferos armazenam.Implementations of this method read a maximum of buffer.Length bytes from the current stream and store them in buffer. A posição atual dentro do fluxo é avançada pelo número de bytes lidos; no entanto, se ocorrer uma exceção, a posição atual dentro do fluxo permanecerá inalterada.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. Implementações retornam o número de bytes lidos.Implementations return the number of bytes read. A implementação será bloqueada até que pelo menos um byte de dados possa ser lido, caso nenhum dado esteja disponível.The implementation will block until at least one byte of data can be read, in the event that no data is available. ReadRetorna 0 somente quando não há mais dados no fluxo e não é mais esperado (como um soquete ou fim de arquivo fechado).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). Uma implementação é livre para retornar menos bytes do que o solicitado, mesmo que o final do fluxo não tenha sido atingido.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Use BinaryReader para ler tipos de dados primitivos.Use BinaryReader for reading primitive data types.

Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32)

Quando for substituído em uma classe derivada, lê uma sequência de bytes do fluxo atual e avança a posição dentro do fluxo até o número de bytes lidos.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[]

Uma matriz de bytes.An array of bytes. Quando esse método retorna, o buffer contém a matriz de bytes especificada com os valores entre offset e (offset + count -1) substituídos pelos bytes lidos da origem atual.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

O deslocamento de bytes baseado em zero em buffer no qual será iniciada a leitura de dados no fluxo atual.The zero-based byte offset in buffer at which to begin storing the data read from the current stream.

count
Int32 Int32 Int32 Int32

O número máximo de bytes a serem lidos no fluxo atual.The maximum number of bytes to be read from the current stream.

Retornos

O número total de bytes lidos do buffer.The total number of bytes read into the buffer. Isso poderá ser menor que o número de bytes solicitado se esses muitos bytes não estiverem disponíveis no momento, ou zero (0) se o final do fluxo tiver sido atingido.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.

Exceções

A soma de offset e count é maior que o tamanho do buffer.The sum of offset and count is larger than the buffer length.

Ocorre um erro de E/S.An I/O error occurs.

Não há suporte para leitura no fluxo.The stream does not support reading.

Foram chamados métodos depois que o fluxo foi fechado.Methods were called after the stream was closed.

Exemplos

O exemplo a seguir mostra como usar Read o para ler um bloco de dados.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

Comentários

Use a CanRead propriedade para determinar se a instância atual oferece suporte à leitura.Use the CanRead property to determine whether the current instance supports reading. Use o ReadAsync método para ler de forma assíncrona o fluxo atual.Use the ReadAsync method to read asynchronously from the current stream.

As implementações desse método lêem um máximo count de bytes do fluxo atual e os armazenam buffer no início offsetem.Implementations of this method read a maximum of count bytes from the current stream and store them in buffer beginning at offset. A posição atual dentro do fluxo é avançada pelo número de bytes lidos; no entanto, se ocorrer uma exceção, a posição atual dentro do fluxo permanecerá inalterada.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. Implementações retornam o número de bytes lidos.Implementations return the number of bytes read. A implementação será bloqueada até que pelo menos um byte de dados possa ser lido, caso nenhum dado esteja disponível.The implementation will block until at least one byte of data can be read, in the event that no data is available. ReadRetorna 0 somente quando não há mais dados no fluxo e não é mais esperado (como um soquete ou fim de arquivo fechado).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). Uma implementação é livre para retornar menos bytes do que o solicitado, mesmo que o final do fluxo não tenha sido atingido.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Use BinaryReader para ler tipos de dados primitivos.Use BinaryReader for reading primitive data types.

Veja também

Aplica-se a