語言

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

目前串流中最大可讀取的位元組數。

傳回

讀取到緩衝區的總位元組數。 如果目前沒有那麼多位元組可用,這可能比請求的位元組數少;如果檔案已經到達末尾,則可能是零。

例外狀況

與offset的和count大於緩衝區長度。

是一個空參考()。

offset 或 count 是陰性。

與 a BFILE 相關聯的連結是閉合的。

發生 I/O 錯誤。

在溪流關閉或處理後,會呼叫方法。

備註

此Read方法從目前串流讀取最多count位元組,並從 buffer開始儲存在 offset 。 串流中的當前位置會依讀取的位元組數前進;但若發生例外,串流中當前位置保持不變。 Read 回傳讀取的位元組數。 只有當該位置目前位於串流的末端時,回傳值才為零。 Read 若無法讀取資料,將阻塞直到至少讀取一個位元組的資料。 Read 只有當檔案結束時才回傳 0。 Read 即使串流尚未到達終點,也可自由回傳比請求的位元組少。

任何嘗試使用 or 方法存取已關閉OracleBFile的串流都會自動重新開啟串流Read。SeekOracleBFile

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

適用於