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
больше, чем длина буфера.
Параметр buffer
является неопределенной ссылкой (Nothing
в Visual Basic).
offset
или count
является отрицательным значением.
Подключение, с которым связан BFILE
, закрыто.
Ошибка ввода/вывода.
Методы были вызваны после закрытия или удаления потока.
Комментарии
Метод Read считывает не более байтов count
из текущего потока и сохраняет их в buffer
, начиная с offset
. Текущая позиция в потоке удобочитается на количество прочитанных байтов; Однако при возникновении исключения текущая позиция в потоке остается неизменной.
Read возвращает число прочитанных байтов. Возвращаемое значение равно нулю, только если позиция в данный момент находится в конце потока.
Read будет блокироваться до тех пор, пока не удастся прочитать хотя бы один байт данных, если данные не будут доступны.
Read возвращает значение 0, только если достигнут конец файла.
Read может возвращать меньше байтов, чем запрошено, даже если конец потока не был достигнут.
Любая попытка доступа к закрытому OracleBFile объекту Read с помощью методов или Seek автоматически открывает 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);
}
}
}