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
的總和大於緩衝區長度。
buffer
為 null 參考 (在 Visual Basic 中為 Nothing
)。
offset
或 count
為負。
BFILE
相關聯的連接已經關閉。
發生 I/O 錯誤。
在關閉或處置資料流之後會呼叫方法。
備註
方法Read會從目前的數據流讀取最大位元組,count
並從 開始offset
儲存它們buffer
。 數據流中的目前位置會依讀取的位元元組數目進階;不過,如果發生例外狀況,數據流中的目前位置會保持不變。
Read 會傳回讀取的位元組數目。 只有在位置目前位於數據流結尾時,傳回值才會是零。
Read 將會封鎖,直到可以讀取至少一個字節的數據,如果沒有任何數據可供使用。
Read 只有在到達檔案結尾時,才會傳回 0。
Read 可以自由傳回比要求的位元組少,即使尚未到達數據流結尾也一樣。
任何使用 Read 或 Seek 方法存取已關閉OracleBFile的嘗試都會自動重新開啟OracleBFile數據流。
下列 C# 範例假設 Oracle 資料表中有此架構:
(col1 number, col2 BFILE)
此範例示範如何使用 Read 和 Seek 方法來存取 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);
}
}
}