Поделиться через


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);  
        }  
    }  
}  

Применяется к