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

Definice

Přečte posloupnost bajtů z aktuálního OracleBFile datového proudu a posune pozici v datovém proudu 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ů. Pokud tato metoda vrátí, vyrovnávací paměť obsahuje zadané bajtové pole s hodnotami mezi offset a (offset + count) nahrazené bajty přečtenými z aktuálního zdroje.

offset
Int32

Posun bajtů založený na nule, ve 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í číst z aktuálního datového proudu.

Návraty

Celkový počet bajtů přečtených do vyrovnávací paměti. To může být menší než počet bajtů požadovaných v případě, že 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 null (Nothing v Visual Basic).

offset nebo count je negativní.

Spojení, ke kterému BFILE je přidruženo, 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 čte maximální počet bajtů z aktuálního datového count proudu a ukládá je na buffer začátku od offset. Aktuální pozice v rámci datového proudu je rozšířena počtem přečtených bajtů; Pokud však dojde k výjimce, zůstane aktuální pozice v rámci datového proudu nezměněna. 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 pokud bylo dosaženo konce souboru. Read je zdarma vrátit méně bajtů, než je požadováno, i když nebyl dosažen konec datového proudu.

Jakýkoli pokus o přístup k uzavřenému OracleBFile objektu pomocí Read metod nebo Seek metod znovu otevře OracleBFile datový proud automaticky.

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 a Seek metody 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