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

Definicja

Odczytuje sekwencję bajtów z bieżącego OracleBFile strumienia i rozwija pozycję w strumieniu przez liczbę 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 bajtów na podstawie zera, w buffer którym należy rozpocząć przechowywanie danych odczytanych z bieżącego strumienia.

count
Int32

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

Zwraca

Całkowita liczba bajtów odczytanych do buforu. Może to być mniejsza 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żące położenie w strumieniu pozostaje niezmienione. Read Zwraca liczbę odczytanych bajtów. Zwracana wartość jest równa zero tylko wtedy, gdy pozycja znajduje się obecnie na końcu strumienia. Read będzie blokować do momentu odczytu co najmniej jednego bajtu danych w przypadku, gdy żadne dane nie są dostępne. Read Metoda zwraca wartość 0 tylko wtedy, gdy osiągnięto koniec pliku. Read program jest bezpłatny, aby zwrócić mniej bajtów niż zażą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 automatycznie otwiera OracleBFile strumień.

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 OracleBFile dostępu 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