Condividi tramite


OracleBFile.Read(Byte[], Int32, Int32) Metodo

Definizione

Consente di leggere una sequenza di byte dal flusso OracleBFile corrente e di passare alla posizione successiva all'interno del flusso in base al numero di byte letti.

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

Parametri

buffer
Byte[]

Matrice di byte. Quando questo metodo viene restituito, il buffer contiene la matrice di byte specificata con i valori compresi tra offset e (offset + count) sostituiti con i byte letti dall'origine corrente.

offset
Int32

Offset dei byte in base zero in buffer in corrispondenza del quale iniziare l'archiviazione dei dati letti dal flusso corrente.

count
Int32

Numero massimo di byte da leggere dal flusso corrente.

Restituisce

Numero complessivo di byte letti nel buffer. È possibile che questo numero sia minore di quello dei byte richiesti se tale quantità di byte non è disponibile o pari a zero se è stata raggiunta la fine del file.

Eccezioni

La somma di offset e count è maggiore della lunghezza del buffer.

buffer è un riferimento null (Nothing in Visual Basic).

offset o count è negativo.

La connessione a cui è associato un BFILE è chiusa.

Si è verificato un errore di I/O.

Sono stati chiamati metodi dopo la chiusura o l'eliminazione del flusso.

Commenti

Il Read metodo legge un massimo di count byte dal flusso corrente e li archivia a buffer partire da offset. La posizione corrente all'interno del flusso è avanzata dal numero di byte letti; Tuttavia, se si verifica un'eccezione, la posizione corrente all'interno del flusso rimane invariata. Read restituisce il numero di byte letti. Il valore restituito è zero solo se la posizione è attualmente alla fine del flusso. Read blocca fino a quando non è possibile leggere almeno un byte di dati, nel caso in cui non siano disponibili dati. Read restituisce 0 solo quando è stata raggiunta la fine del file. Read è libero di restituire un numero inferiore di byte rispetto a quello richiesto anche se la fine del flusso non è stata raggiunta.

Qualsiasi tentativo di accesso a un oggetto chiuso OracleBFile usando i Read metodi o Seek riapre automaticamente un OracleBFile flusso.

L'esempio C# seguente presuppone questo schema in una tabella Oracle:

(col1 number, col2 BFILE)  

Nell'esempio viene illustrato l'uso dei Read metodi e Seek per accedere a un OracleBFile oggetto .

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);  
        }  
    }  
}  

Si applica a