OracleBFile.Read(Byte[], Int32, Int32) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Lee una secuencia de bytes de la secuencia actual OracleBFile y avanza la posición dentro de la secuencia por el número de bytes leídos.
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[]
Matriz de bytes. Cuando este método devuelve, el búfer contiene la matriz de bytes especificada con los valores entre offset y (offset + count) reemplazados por los bytes leídos del origen actual.
- offset
- Int32
Desplazamiento de bytes de base cero en el buffer que se van a empezar a almacenar los datos leídos de la secuencia actual.
- count
- Int32
Número máximo de bytes que se van a leer desde la secuencia actual.
Devoluciones
Número total de bytes leídos en el búfer. Puede ser menor que el número de bytes solicitados si no hay muchos bytes disponibles actualmente, o cero si se ha alcanzado el final del archivo.
Excepciones
La suma de offset y count es mayor que la longitud del búfer.
buffer es una referencia nula (Nothing en Visual Basic).
offset o count es negativo.
La conexión con la que BFILE está asociado está cerrada.
Error de E/S.
Se llamó a los métodos después de cerrar o desechar la secuencia.
Comentarios
El Read método lee un máximo de count bytes de la secuencia actual y los almacena a partir de offsetbuffer . La posición actual dentro de la secuencia está avanzada por el número de bytes leídos; sin embargo, si se produce una excepción, la posición actual dentro de la secuencia permanece sin cambios.
Read devuelve el número de bytes leídos. El valor devuelto es cero solo si la posición está actualmente al final de la secuencia.
Read se bloqueará hasta que se pueda leer al menos un byte de datos, en caso de que no haya datos disponibles.
Read devuelve 0 solo cuando se ha alcanzado el final del archivo.
Read es libre de devolver menos bytes de los solicitados incluso si no se ha alcanzado el final de la secuencia.
Cualquier intento de acceder a un objeto cerrado OracleBFile mediante los Read métodos o Seek vuelve a abrir una OracleBFile secuencia automáticamente.
En el ejemplo de C# siguiente se da por supuesto este esquema en una tabla de Oracle:
(col1 number, col2 BFILE)
En el ejemplo se muestra el uso de los Read métodos y Seek para tener acceso a un 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);
}
}
}