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

Definition

Läser en sekvens med byte från den aktuella OracleBFile dataströmmen och flyttar positionen inom dataströmmen med antalet lästa byte.

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

Parametrar

buffer
Byte[]

En matris med byte. När den här metoden returnerar innehåller bufferten den angivna bytematrisen med värdena mellan offset och (offset + count) ersatta av byteen som lästs från den aktuella källan.

offset
Int32

Den nollbaserade byteförskjutningen buffer där du kan börja lagra data som lästs från den aktuella strömmen.

count
Int32

Det maximala antalet byte som ska läsas från den aktuella strömmen.

Returer

Det totala antalet byte som lästs in i bufferten. Detta kan vara mindre än antalet byte som begärs om så många byte inte är tillgängliga för närvarande, eller noll om slutet av filen har nåtts.

Undantag

Summan av offset och count är större än buffertlängden.

buffer är en nullreferens (Nothing i Visual Basic).

offset eller count är negativ.

Anslutningen som en BFILE är associerad med är stängd.

Ett I/O-fel uppstod.

Metoder anropades efter att strömmen stängdes eller togs bort.

Kommentarer

Metoden Read läser maximalt antal count byte från den aktuella strömmen och lagrar dem från buffer och med offset. Den aktuella positionen i dataströmmen avanceras av antalet lästa byte. Men om ett undantag inträffar förblir den aktuella positionen i dataströmmen oförändrad. Read returnerar antalet lästa byte. Returvärdet är bara noll om positionen för närvarande är i slutet av strömmen. Read blockeras tills minst en byte data kan läsas, i händelse av att inga data är tillgängliga. Read returnerar endast 0 när slutet av filen har nåtts. Read kan returnera färre byte än vad som begärts även om strömmens slut inte har nåtts.

Alla försök att komma åt en stängd OracleBFile med hjälp av Read metoderna eller Seek öppnar en OracleBFile dataström automatiskt.

Följande C#-exempel förutsätter att det här schemat finns i en Oracle-tabell:

(col1 number, col2 BFILE)

Exemplet visar hur du använder Read metoderna och Seek för att komma åt ett 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);
        }
    }
}

Gäller för