Compartir a través de


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

Definición

Lee una secuencia de bytes en la secuencia OracleBFile actual y hace avanzar la posición dentro de la secuencia en función del 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 un valor, el búfer contiene la matriz de bytes especificada con valores entre offset y (offset + count) reemplazada por los bytes leídos desde el origen actual.

offset
Int32

Posición de desplazamiento en bytes de base cero de buffer donde se comienza a almacenar los datos leídos de la secuencia actual.

count
Int32

Número máximo de bytes que se deben leer de la secuencia actual.

Devoluciones

Número total de bytes leídos en el búfer. Puede ser menor que el número de bytes solicitado si dicho número de bytes no está disponible en la actualidad, 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 a la que está asociado BFILE está cerrada.

Error de E/S.

Se llamó a algún método 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 buffer a partir offsetde . 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 para 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 supone que este esquema se encuentra 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);  
        }  
    }  
}  

Se aplica a