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
为空引用(在 Visual Basic 中为 Nothing
)。
offset
或 count
为负数。
与 BFILE
相关联的连接已关闭。
出现 I/O 错误。
关闭或释放该流后,调用方法。
注解
方法 Read 从当前流中读取最大字节数 count
,并将其 buffer
存储在 开头 offset
。 流中的当前位置按读取的字节数提前;但是,如果发生异常,流中的当前位置保持不变。
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);
}
}
}