OracleBFile.Read(Byte[], Int32, Int32) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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);
}
}
}