OracleBFile.Read(Byte[], Int32, Int32) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
從目前 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);
}
}
}