OracleBFile.Read(Byte[], Int32, Int32) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Lê uma sequência de bytes do fluxo OracleBFile atual de forma assíncrona e avança a posição no fluxo até o 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[]
Uma matriz de bytes. Quando esse método retorna, o buffer contém a matriz de bytes especificada com os valores entre offset
e (offset
+ count
) substituídos pelos bytes lidos da origem atual.
- offset
- Int32
O deslocamento de bytes baseado em zero em buffer
no qual será iniciada a leitura de dados no fluxo atual.
- count
- Int32
O número máximo de bytes a serem lidos no fluxo atual.
Retornos
O número total de bytes lidos do 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 se o final do arquivo tiver sido atingido.
Exceções
A soma de offset
e count
é maior que o tamanho do buffer.
buffer
é uma referência nula (Nothing
no Visual Basic).
offset
ou count
é negativo.
A conexão com a qual um BFILE
está associado está fechada.
Ocorreu um erro de E/S.
Os métodos foram chamados depois que o fluxo foi fechado ou descartado.
Comentários
O Read método lê um máximo de count
bytes do fluxo atual e os armazena no início em buffer
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.
Read retorna o número de bytes lidos. O valor retornado será zero somente se a posição estiver atualmente no final do fluxo.
Read bloqueará até que pelo menos um byte de dados possa ser lido, caso nenhum dado esteja disponível.
Read retorna 0 somente quando o final do arquivo for atingido.
Read é livre para retornar menos bytes do que o solicitado, mesmo que o final do fluxo não tenha sido atingido.
Qualquer tentativa de acessar um fechado OracleBFile usando os Read métodos ou Seek reabre um OracleBFile fluxo automaticamente.
O exemplo de C# a seguir pressupõe esse esquema em uma tabela Oracle:
(col1 number, col2 BFILE)
O exemplo demonstra o uso dos Read métodos e Seek para acessar 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);
}
}
}