Freigeben über


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

Definition

Liest eine Folge von Bytes aus dem aktuellen OracleBFile-Stream und verschiebt die Position im Stream um die Anzahl der gelesen Bytes nach vorn.

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

Parameter

buffer
Byte[]

Ein Bytearray. Nach dem Beenden dieser Methode enthält der Puffer das angegebene Bytearray mit den Werten zwischen offset und (offset + count), die durch aus der aktuellen Quelle gelesene Bytes ersetzt wurden.

offset
Int32

Der nullbasierte Byteoffset im buffer, ab dem die aus dem aktuellen Stream gelesenen Daten gespeichert werden.

count
Int32

Die maximale Anzahl an Bytes, die aus dem aktuellen Stream gelesen werden sollen.

Gibt zurück

Die Gesamtanzahl der in den Puffer gelesenen Bytes. Dies kann weniger als die Anzahl der angeforderten Bytes sein, wenn diese Anzahl an Bytes derzeit nicht verfügbar ist, oder 0 (null), wenn das Dateiende erreicht ist.

Ausnahmen

Die Summe von offset und count ist größer als die Pufferlänge.

buffer ist ein NULL-Verweis (Nothing in Visual Basic).

offset oder count ist ein negativer Wert.

Die Verbindung, der eine BFILE zugeordnet ist, wurde geschlossen.

E/A-Fehler

Es wurden Methoden aufgerufen, nachdem der Stream geschlossen oder freigegeben wurde.

Hinweise

Die Read -Methode liest ein Maximum an count Bytes aus dem aktuellen Stream und speichert sie am buffer Anfang unter offset. Die aktuelle Position im Stream wird um die Anzahl der gelesenen Bytes erweitert. Wenn jedoch eine Ausnahme auftritt, bleibt die aktuelle Position im Stream unverändert. Read gibt die Anzahl der gelesenen Bytes zurück. Der Rückgabewert ist nur 0, wenn sich die Position derzeit am Ende des Datenstroms befindet. Read blockiert, bis mindestens ein Byte daten gelesen werden kann, falls keine Daten verfügbar sind. Read gibt 0 nur zurück, wenn das Ende der Datei erreicht wurde. Read ist frei, um weniger Bytes als angefordert zurückzugeben, auch wenn das Ende des Datenstroms nicht erreicht wurde.

Jeder Versuch, mit den Methoden oder Seek auf ein geschlossenes OracleBFile Objekt zuzugreifen, wird automatisch wieder geöffnetOracleBFile.Read

Im folgenden C#-Beispiel wird dieses Schema in einer Oracle-Tabelle vorausgesetzt:

(col1 number, col2 BFILE)  

Das Beispiel veranschaulicht die Verwendung der Read Methoden und Seek für den Zugriff auf ein OracleBFile Objekt.

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

Gilt für: