OracleBFile.Read(Byte[], Int32, Int32) 方法

定義

自目前 OracleBFile 讀取一位元組序列,並依所讀取的位元組數目進階資料流裡的位置。

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

參數

buffer
Byte[]

位元組陣列。 當這個方法傳回時,緩衝區會包含指定的位元組陣列,這個陣列具有介於 offset 到 (offset + count) 之間的值,已由讀取自目前來源的位元組所取代。

offset
Int32

buffer 中以零起始的位元組位移,即開始儲存讀取自目前資料流之資料的位置。

count
Int32

自目前資料流讀取的最大位元組數。

傳回

緩衝區所讀取的總位元組數。 如果目前無法取得足夠的位元組,則這個數目可能小於所要求的位元組數。如果已經到達資料流末端,則為零。

例外狀況

offsetcount 的總和大於緩衝區長度。

buffer 為 null 參考 (在 Visual Basic 中為 Nothing)。

offsetcount 為負。

BFILE 相關聯的連接已經關閉。

發生 I/O 錯誤。

在關閉或處置資料流之後會呼叫方法。

備註

方法Read會從目前的數據流讀取最大位元組,count並從 開始offset儲存它們buffer。 數據流中的目前位置會依讀取的位元元組數目進階;不過,如果發生例外狀況,數據流中的目前位置會保持不變。 Read 會傳回讀取的位元組數目。 只有在位置目前位於數據流結尾時,傳回值才會是零。 Read 將會封鎖,直到可以讀取至少一個字節的數據,如果沒有任何數據可供使用。 Read 只有在到達檔案結尾時,才會傳回 0。 Read 可以自由傳回比要求的位元組少,即使尚未到達數據流結尾也一樣。

任何使用 ReadSeek 方法存取已關閉OracleBFile的嘗試都會自動重新開啟OracleBFile數據流。

下列 C# 範例假設 Oracle 資料表中有此架構:

(col1 number, col2 BFILE)  

此範例示範如何使用 ReadSeek 方法來存取 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);  
        }  
    }  
}  

適用於