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 为空引用(在 Visual Basic 中为 Nothing)。

offsetcount 为负数。

BFILE 相关联的连接已关闭。

出现 I/O 错误。

关闭或释放该流后,调用方法。

注解

方法 Read 从当前流中读取最大字节数 count ,并将其 buffer 存储在 开头 offset。 流中的当前位置按读取的字节数提前;但是,如果发生异常,流中的当前位置保持不变。 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);  
        }  
    }  
}  

适用于