BufferedStream.Read Método

Definição

Sobrecargas

Name Description
Read(Span<Byte>)

Copia bytes do fluxo atualmente em buffer para um intervalo de bytes e avança a posição dentro do fluxo em buffer pelo número de bytes lidos.

Read(Byte[], Int32, Int32)

Copia bytes do fluxo atual em buffer para um array.

Read(Span<Byte>)

Origem:
BufferedStream.cs
Origem:
BufferedStream.cs
Origem:
BufferedStream.cs
Origem:
BufferedStream.cs
Origem:
BufferedStream.cs

Copia bytes do fluxo atualmente em buffer para um intervalo de bytes e avança a posição dentro do fluxo em buffer pelo número de bytes lidos.

public:
 override int Read(Span<System::Byte> destination);
public override int Read(Span<byte> destination);
override this.Read : Span<byte> -> int
Public Overrides Function Read (destination As Span(Of Byte)) As Integer

Parâmetros

destination
Span<Byte>

Uma região da memória. Quando este método retorna, o conteúdo desta região é substituído pelos bytes lidos da fonte atual.

Devoluções

O número total de bytes lidos no buffer. Isto pode ser inferior ao número de bytes alocados no buffer se esse número de bytes não estiver disponível no momento, ou zero (0) se o fim do fluxo for atingido.

Observações

Use a CanRead propriedade para determinar se a instância atual suporta leitura. Use o ReadAsync método para ler assíncronamente a partir do fluxo atual.

Implementações deste método leem um máximo de buffer.Length bytes do fluxo atual e armazenam-nos em 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 mantém-se inalterada. As implementações devolvem o número de bytes lidos. A implementação irá bloquear até que pelo menos um byte de dados possa ser lido, caso não haja dados disponíveis. Read retorna 0 apenas quando não há mais dados no fluxo e não se espera mais (como um socket fechado ou fim de ficheiro). Uma implementação pode devolver menos bytes do que o solicitado, mesmo que o fim do fluxo não tenha sido atingido.

Usar BinaryReader para ler tipos de dados primitivos.

Aplica-se a

Read(Byte[], Int32, Int32)

Origem:
BufferedStream.cs
Origem:
BufferedStream.cs
Origem:
BufferedStream.cs
Origem:
BufferedStream.cs
Origem:
BufferedStream.cs

Copia bytes do fluxo atual em buffer para um array.

public:
 override int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public:
 override int Read(cli::array <System::Byte> ^ array, int offset, int count);
public override int Read(byte[] buffer, int offset, int count);
public override int Read(byte[] array, int offset, int count);
override this.Read : byte[] * int * int -> int
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer
Public Overrides Function Read (array As Byte(), offset As Integer, count As Integer) As Integer

Parâmetros

bufferarray
Byte[]
offset
Int32

O deslocamento de bytes no buffer onde começar a ler bytes.

count
Int32

O número de bytes a ler.

Devoluções

O número total de bytes lidos em array. Isto pode ser inferior ao número de bytes solicitados se esse número de bytes não estiver disponível no momento, ou 0 se o fim do fluxo for atingido antes de qualquer dado poder ser lido.

Exceções

O comprimento de array menos offset é menor que count.

array é null.

offset ou count é negativo.

O fluxo não está aberto ou está null.

O stream não suporta leitura.

Os métodos foram chamados após o encerramento do riacho.

Exemplos

Este exemplo de código faz parte de um exemplo maior fornecido para a BufferedStream classe.

// Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.");
bytesReceived = 0;
startTime = DateTime.Now;

int numBytesToRead = receivedData.Length;

while (numBytesToRead > 0)
{
    // Read may return anything from 0 to numBytesToRead.
    int n = bufStream.Read(receivedData,0, receivedData.Length);
    // The end of the file is reached.
    if (n == 0)
        break;
    bytesReceived += n;
    numBytesToRead -= n;
}

bufferedTime = (DateTime.Now - startTime).TotalSeconds;
Console.WriteLine("{0} bytes received in {1} seconds.\n",
    bytesReceived.ToString(),
    bufferedTime.ToString("F1"));
// Receive data using the BufferedStream.
printfn "Receiving data using BufferedStream."
bytesReceived <- 0
let startTime = DateTime.Now

let mutable numBytesToRead = receivedData.Length

let mutable broken = false
while not broken && numBytesToRead > 0 do
    // Read may return anything from 0 to numBytesToRead.
    let n = bufStream.Read(receivedData,0, receivedData.Length)
    // The end of the file is reached.
    if n = 0 then
        broken <- true
    else
        bytesReceived <- bytesReceived + n
        numBytesToRead <- numBytesToRead - n

let bufferedTime = (DateTime.Now - startTime).TotalSeconds
printfn $"{bytesReceived} bytes received in {bufferedTime:F1} seconds.\n"
' Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.")
bytesReceived = 0
startTime = DateTime.Now

Dim numBytesToRead As Integer = receivedData.Length
Dim n As Integer
Do While numBytesToRead > 0

    'Read my return anything from 0 to numBytesToRead
    n = bufStream.Read(receivedData, 0, receivedData.Length)
    'The end of the file is reached.
    If n = 0 Then
        Exit Do
    End If

    bytesReceived += n
    numBytesToRead -= n
Loop

bufferedTime = DateTime.Now.Subtract(startTime).TotalSeconds
Console.WriteLine("{0} bytes received in {1} " & _
    "seconds." & vbCrLf, _
    bytesReceived.ToString(), _
    bufferedTime.ToString("F1"))

Observações

O Read método só devolverá 0 se o fim do fluxo for alcançado. Em todos os outros casos, Read lê sempre pelo menos um byte do fluxo antes de regressar. Por definição, se não houver dados disponíveis do fluxo aquando de uma chamada para Read, o Read método retorna 0 (o fim do fluxo é atingido automaticamente). Uma implementação pode devolver menos bytes do que o solicitado, mesmo que o fim do fluxo não tenha sido atingido.

Usar BinaryReader para ler tipos de dados primitivos.

Ver também

Aplica-se a