Język

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

Definicja

Odczytuje sekwencję bajtów z bieżącego OracleBFile strumienia i rozwija pozycję w strumieniu według liczby odczytanych bajtów.

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[]

Tablica bajtów. Gdy ta metoda zwraca, bufor zawiera określoną tablicę bajtów z wartościami między offset i (offset + count) zastąpionymi bajtami odczytanymi z bieżącego źródła.

offset
Int32

Przesunięcie bajtu na podstawie zera, w buffer którym należy rozpocząć przechowywanie danych odczytanych z bieżącego strumienia.

count
Int32

Maksymalna liczba bajtów do odczytu z bieżącego strumienia.

Zwraca

Całkowita liczba bajtów odczytanych do buforu. Może to być mniej niż liczba bajtów żądanych, jeśli liczba bajtów nie jest obecnie dostępna lub zero, jeśli osiągnięto koniec pliku.

Wyjątki

Suma offset wartości i count jest większa niż długość buforu.

buffer jest odwołaniem o wartości null (Nothing w Visual Basic).

offset lub count jest ujemny.

Połączenie, z którym BFILE jest skojarzone, jest zamknięte.

Wystąpił błąd we/wy.

Metody były wywoływane po zamknięciu lub usunięciu strumienia.

Uwagi

Metoda Read odczytuje maksymalnie bajty count z bieżącego strumienia i zapisuje je na buffer początku na offset. Bieżące położenie w strumieniu jest zaawansowane przez liczbę odczytanych bajtów; jednak w przypadku wystąpienia wyjątku bieżąca pozycja w strumieniu pozostaje niezmieniona. Read Zwraca liczbę odczytanych bajtów. Wartość zwracana jest równa zero tylko wtedy, gdy pozycja znajduje się obecnie na końcu strumienia. Read zablokuje co najmniej jeden bajt danych w przypadku, gdy żadne dane nie są dostępne. Read Zwraca wartość 0 tylko wtedy, gdy osiągnięto koniec pliku. Read jest bezpłatny, aby zwrócić mniej bajtów niż żądano, nawet jeśli koniec strumienia nie został osiągnięty.

Każda próba uzyskania dostępu do zamkniętego OracleBFile przy użyciu Read metod lub Seek powoduje automatyczne ponowne otwarcie strumienia OracleBFile .

W poniższym przykładzie w języku C# przyjęto założenie, że ten schemat jest w tabeli Oracle:

(col1 number, col2 BFILE)

W przykładzie pokazano użycie Read metod i Seek w celu uzyskania dostępu OracleBFile do obiektu.

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

Dotyczy