Sdílet prostřednictvím


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

Definice

Přečte posloupnost bajtů z aktuálního OracleBFile datového proudu a posune pozici v rámci streamu o počet přečtených bajtů.

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

Parametry

buffer
Byte[]

Pole bajtů. Když se tato metoda vrátí, vyrovnávací paměť obsahuje zadané pole bajtů s hodnotami mezi offset a (offset + count) nahrazené bajty načtenými z aktuálního zdroje.

offset
Int32

Nulový odsazení bajtů, při buffer kterém se mají začít ukládat data načtená z aktuálního datového proudu.

count
Int32

Maximální počet bajtů, které se mají načíst z aktuálního datového proudu.

Návraty

Celkový počet bajtů načtených do vyrovnávací paměti. To může být menší než počet požadovaných bajtů, pokud tento počet bajtů není aktuálně k dispozici, nebo nula, pokud bylo dosaženo konce souboru.

Výjimky

Součet offset a count je větší než délka vyrovnávací paměti.

buffer je odkaz s hodnotou null (Nothing v jazyce Visual Basic).

offset nebo count je negativní.

Připojení, ke kterému je přidruženo, BFILE je uzavřeno.

Došlo k vstupně-výstupní chybě.

Metody byly volány po zavření nebo odstranění datového proudu.

Poznámky

Metoda Read načte maximální počet count bajtů z aktuálního datového proudu a uloží je na buffer začátku od offset. Aktuální pozice v rámci streamu je rozšířena o počet přečtených bajtů; Pokud však dojde k výjimce, aktuální pozice v rámci datového proudu zůstane beze změny. Read vrátí počet přečtených bajtů. Návratová hodnota je nula pouze v případě, že je pozice aktuálně na konci datového proudu. Read bude blokovat, dokud nebude možné číst alespoň jeden bajt dat v případě, že nejsou k dispozici žádná data. Read vrátí hodnotu 0 pouze tehdy, když je dosaženo konce souboru. Read aplikace může vracet méně bajtů, než je požadováno, i když nebylo dosaženo konce datového proudu.

Při každém pokusu o přístup k uzavřenému OracleBFile objektu Read pomocí metody nebo Seek se datový proud automaticky znovu otevře OracleBFile .

Následující příklad jazyka C# předpokládá toto schéma v tabulce Oracle:

(col1 number, col2 BFILE)  

Příklad ukazuje použití Read metod a Seek pro přístup k objektu OracleBFile .

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

Platí pro