OracleBFile.Read(Byte[], Int32, Int32) Método

Definição

Lê uma sequência de bytes do fluxo atual OracleBFile e avança a posição dentro do fluxo pelo número de bytes lidos.

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

Parâmetros

buffer
Byte[]

Um conjunto de bytes. Quando este método retorna, o buffer contém o array de bytes especificado com os valores entre offset e (offset + count) substituídos pelos bytes lidos da fonte atual.

offset
Int32

O deslocamento de bytes baseado em zero em buffer que começar a armazenar os dados lidos do fluxo atual.

count
Int32

O número máximo de bytes a ser lido do fluxo atual.

Devoluções

O número total de bytes lidos no buffer. Isto pode ser inferior ao número de bytes solicitados se esse número de bytes não estiver disponível no momento, ou zero se o fim do ficheiro for alcançado.

Exceções

A soma de offset e count é maior do que o comprimento do buffer.

buffer é uma referência nula (Nothing em Visual Basic).

offset ou count é negativo.

A ligação à qual a BFILE está associado é fechada.

Ocorreu um erro de I/O.

Os métodos eram chamados depois de o riacho ter sido fechado ou eliminado.

Observações

O Read método lia um máximo de count bytes do fluxo atual e armazena-os buffer a partir de .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 mantém-se inalterada. Read devolve o número de bytes lidos. O valor de retorno é zero apenas se a posição estiver atualmente no final do fluxo. Read bloqueará até que pelo menos um byte de dados possa ser lido, caso não haja dados disponíveis. Read devolve 0 apenas quando o final do ficheiro foi alcançado. Read é livre para devolver menos bytes do que o solicitado mesmo que o fim do fluxo não tenha sido atingido.

Qualquer tentativa de aceder a um closed OracleBFile usando os Read métodos or Seek reabre automaticamente um OracleBFile fluxo.

O seguinte exemplo de C# assume este esquema numa tabela Oracle:

(col1 number, col2 BFILE)

O exemplo demonstra a utilização dos Read métodos e Seek para aceder a um OracleBFile objeto.

byte[] buffer = new byte[100];
OracleDataReader dataReader = command.ExecuteReader();
using (dataReader) {
    if (dataReader.Read()) {
            OracleBFile BFile = dataReader.GetOracleBFile(1);
        using (BFile) {
            BFile.Seek(0, SeekOrigin.Begin);
            BFile.Read(buffer, 0, 100);
        }
    }
}

Aplica-se a