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


OracleBFile Класс

Определение

Представляет управляемый объект OracleBFile, предназначенный для работы с типом данных Oracle BFILE. Этот класс не наследуется.

public ref class OracleBFile sealed : System::IO::Stream, ICloneable, System::Data::SqlTypes::INullable
public sealed class OracleBFile : System.IO.Stream, ICloneable, System.Data.SqlTypes.INullable
type OracleBFile = class
    inherit Stream
    interface ICloneable
    interface IDisposable
    interface INullable
type OracleBFile = class
    inherit Stream
    interface ICloneable
    interface INullable
    interface IDisposable
Public NotInheritable Class OracleBFile
Inherits Stream
Implements ICloneable, INullable
Наследование
Реализации

Комментарии

Тип данных Oracle BFILE — это тип данных Oracle LOB , содержащий ссылку на двоичные данные с максимальным размером 4 гигабайта. Oracle BFILE отличается от других типов данных Oracle LOB тем, что его данные хранятся в физическом файле операционной системы, а не на сервере. Обратите внимание, что BFILE тип данных предоставляет доступ только для чтения к данным. Поэтому методы, ориентированные на запись, наследуемые Stream от класса , не поддерживаются.

Другие характеристики BFILE типа данных, которые отличают его от LOB типа данных, в том, что он:

  • содержит неструктурированные данные;

  • поддерживает обработку данных на сервере в виде фрагментов;

  • использует ссылочную семантику копирования. Например, при выполнении операции BFILEкопирования в копируется только BFILE указатель (который является ссылкой на файл). Данные файла не копируются.

Тип BFILE данных следует использовать для ссылок LOBна объекты большого размера и, следовательно, непрактично хранить в базе данных. Для использования BFILE типа данных существуют затраты на клиент, сервер и обмен данными по сравнению с типом LOB данных. Доступ к объекту эффективнее BFILE , если требуется получить только небольшой объем данных. Если необходимо получить весь объект, доступ к объектам базы данных LOBбудет эффективнее.

Каждый объект, отличный от NULL OracleBFile , связан с двумя сущностями, которые определяют расположение базового физического файла:

  • Объект Oracle DIRECTORY, который является псевдонимом базы данных для каталога в файловой системе.

  • Имя файла базового физического файла, расположенного в каталоге, связанном с объектом DIRECTORY.

BFILE После создания можно получить его указатель в виде OracleBFile объекта с помощью ExecuteReader методов или ExecuteScalar .

Чтобы получить OracleBFile объект , вызовите GetOracleBFile метод .

Физический файл, с которым OracleBFile связан объект, не должен существовать, пока вы не попытаеться получить к нему доступ. Приложение может привязать OracleBFile к несуществующему файлу, создать физический файл в ожидаемом расположении, а затем вызвать .Read

Любая попытка получить доступ к закрытому OracleBFile объекту Read с помощью методов или Seek автоматически открывает OracleBFile поток.

В следующем примере C# показано, как создать BFILE в таблице Oracle, а затем получить его в виде OracleBFile объекта . В примере демонстрируется использование OracleDataReader объекта и OracleBFileSeek методов и Read .

private void GetOracleBFile(string connectionString)
{
    //Create and open the connection.
    using (OracleConnection connection = new OracleConnection(connectionString))
    {
        connection.Open();

        //Create and execute the commands.
        OracleCommand command = connection.CreateCommand();
        command.CommandText = "CREATE OR REPLACE DIRECTORY TestDir AS 'c:\\bfiles'";
        command.ExecuteNonQuery();
        command.CommandText = "CREATE TABLE TestTable(col1 number, col2 BFILE)";
        command.ExecuteNonQuery();
        command.CommandText = "INSERT INTO TestTable VALUES ('2', BFILENAME('TESTDIR', 'File.jpg'))";
        command.ExecuteNonQuery();
        command.CommandText = "SELECT * FROM TestTable";

        //Read the BFile data.
        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);
                }
            }
        }
    }
    return;
}

Дополнительные сведения о создании и использовании Oracle BFILEсм. в соответствующем разделе документации oracle.

Примечание

Методы BeginWrite, EndWriteи WriteByte , которые наследуются от System.IO.Stream класса , не поддерживаются, так как BFILE тип данных доступен только для чтения.

Поля

Null

Представляет пустой объект OracleBFile, который не привязан ни к какому файлу.

Свойства

CanRead

Получает значение, определяющее возможность чтения потока BFILE.

CanSeek

Получает значение, показывающее, могут ли быть выполнены операции прямого и обратного поиска.

CanTimeout

Возвращает значение, которое показывает, может ли для данного потока истечь время ожидания.

(Унаследовано от Stream)
CanWrite

Получает значение, показывающее, поддерживает ли объект запись.

Connection

Получает OracleConnection, используемый данным экземпляром OracleBFile.

DirectoryName

Получает имя объекта DIRECTORY, с которым связан объект OracleBFile.

FileExists

Получает значение, показывающее, существует ли в операционной системе файл, в котором содержатся данные типа BFILE.

FileName

Получает имя BFILE без пути.

IsNull

Получает значение, определяющее, является ли OracleBFile потоком Null.

Length

Получает значение, возвращающее длину файла, с которым связан объект OracleBFile, в байтах.

Position

Получает текущую позицию чтения в потоке OracleBFile.

ReadTimeout

Возвращает или задает значение в миллисекундах, определяющее период времени, отведенного потоку на выполнение операции чтения.

(Унаследовано от Stream)
Value

Получает Array типа Byte, в котором содержатся данные OracleBFile.

WriteTimeout

Возвращает или задает значение в миллисекундах, определяющее период времени, отведенного потоку на выполнение операции записи.

(Унаследовано от Stream)

Методы

BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Начинает операцию асинхронного чтения. (Рекомендуется использовать ReadAsync(Byte[], Int32, Int32).)

(Унаследовано от Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Начинает операцию асинхронной записи. (Рекомендуется использовать WriteAsync(Byte[], Int32, Int32).)

(Унаследовано от Stream)
Clone()

Создает копию данного объекта OracleBFile, связанную с тем же файлом, что и исходный объект.

Close()

Закрывает текущий поток и отключает все ресурсы (например, сокеты и файловые дескрипторы), связанные с текущим потоком. Вместо вызова данного метода, убедитесь в том, что поток надлежащим образом ликвидирован.

(Унаследовано от Stream)
CopyTo(Int64, OracleLob, Int64, Int64)

Копирует из OracleBFile в объект назначения OracleLob, с заданным объемом данных, смещением источника и смещением объекта назначения.

CopyTo(OracleLob)

Копирует все содержимое данного объекта OracleBFile в начало конечного объекта OracleLob.

CopyTo(OracleLob, Int64)

Копирует все содержимое из OracleBFile в конечный объект OracleLob с заданным смещением.

CopyTo(Stream)

Считывает байты из текущего потока и записывает их в другой поток. Обе позиции потоков перемещаются по количеству скопированных байтов.

(Унаследовано от Stream)
CopyTo(Stream, Int32)

Считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера. Обе позиции потоков перемещаются по количеству скопированных байтов.

(Унаследовано от Stream)
CopyToAsync(Stream)

Асинхронно считывает байты из текущего потока и записывает их в другой поток. Обе позиции потоков перемещаются по количеству скопированных байтов.

(Унаследовано от Stream)
CopyToAsync(Stream, CancellationToken)

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный токен отмены. Обе позиции потоков перемещаются по количеству скопированных байтов.

(Унаследовано от Stream)
CopyToAsync(Stream, Int32)

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера. Обе позиции потоков перемещаются по количеству скопированных байтов.

(Унаследовано от Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера и токен отмены. Обе позиции потоков перемещаются по количеству скопированных байтов.

(Унаследовано от Stream)
CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
CreateWaitHandle()
Устаревшие..
Устаревшие..
Устаревшие..

Выделяет объект WaitHandle.

(Унаследовано от Stream)
Dispose()

Освобождает все ресурсы, используемые данным объектом.

Dispose()

Освобождает все ресурсы, занятые модулем Stream.

(Унаследовано от Stream)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом Stream, а при необходимости освобождает также управляемые ресурсы.

(Унаследовано от Stream)
DisposeAsync()

Асинхронно освобождает неуправляемые ресурсы, используемые классом Stream.

(Унаследовано от Stream)
EndRead(IAsyncResult)

Ожидает завершения отложенного асинхронного чтения. (Рекомендуется использовать ReadAsync(Byte[], Int32, Int32).)

(Унаследовано от Stream)
EndWrite(IAsyncResult)

Заканчивает операцию асинхронной записи. (Рекомендуется использовать WriteAsync(Byte[], Int32, Int32).)

(Унаследовано от Stream)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Flush()

В настоящее время не поддерживается.

FlushAsync()

Асинхронно очищает все буферы для этого потока и вызывает запись всех буферизованных данных в базовое устройство.

(Унаследовано от Stream)
FlushAsync(CancellationToken)

Асинхронно очищает все буферы данного потока, вызывает запись буферизованных данных в базовое устройство и отслеживает запросы отмены.

(Унаследовано от Stream)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetLifetimeService()
Устаревшие..

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.

(Унаследовано от MarshalByRefObject)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
InitializeLifetimeService()
Устаревшие..

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject.

(Унаследовано от MarshalByRefObject)
ObjectInvariant()
Устаревшие..

Обеспечивает поддержку для Contract.

(Унаследовано от Stream)
Read(Byte[], Int32, Int32)

Считывает последовательность байтов из текущего потока OracleBFile и перемещает позицию внутри потока на число считанных байтов.

Read(Span<Byte>)

При переопределении в производном классе считывает последовательность байтов из текущего потока и перемещает позицию в потоке на число считанных байтов.

(Унаследовано от Stream)
ReadAsync(Byte[], Int32, Int32)

Асинхронно считывает последовательность байтов из текущего потока и перемещает позицию внутри потока на число считанных байтов.

(Унаследовано от Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока, перемещает позицию в потоке на число считанных байтов и отслеживает запросы отмены.

(Унаследовано от Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока, перемещает позицию в потоке на число считанных байтов и отслеживает запросы отмены.

(Унаследовано от Stream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Считывает по крайней мере минимальное количество байтов из текущего потока и перемещает позицию в потоке на число прочитанных байтов.

(Унаследовано от Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Асинхронно считывает по крайней мере минимальное количество байтов из текущего потока, перемещает позицию в потоке на число прочитанных байтов и отслеживает запросы отмены.

(Унаследовано от Stream)
ReadByte()

Считывает байт из потока и перемещает позицию в потоке на один байт или возвращает -1, если достигнут конец потока.

(Унаследовано от Stream)
ReadExactly(Byte[], Int32, Int32)

Считывает count количество байтов из текущего потока и перемещает позицию в потоке.

(Унаследовано от Stream)
ReadExactly(Span<Byte>)

Считывает байты из текущего потока и перемещает позицию в потоке buffer до заполнения .

(Унаследовано от Stream)
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно считывает count количество байтов из текущего потока, перемещает позицию в потоке и отслеживает запросы отмены.

(Унаследовано от Stream)
ReadExactlyAsync(Memory<Byte>, CancellationToken)

Асинхронно считывает байты из текущего потока, перемещает позицию в потоке buffer до заполнения и отслеживает запросы отмены.

(Унаследовано от Stream)
Seek(Int64, SeekOrigin)

Задает позицию в текущем потоке OracleBFile.

SetFileName(String, String)

Привязывает объект OracleBFile к другому файлу в операционной системе.

SetLength(Int64)

Не поддерживается в текущей версии.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
Write(Byte[], Int32, Int32)

Не поддерживается в текущей версии.

Write(ReadOnlySpan<Byte>)

При переопределении в производном классе записывает последовательность байтов в текущий поток и перемещает текущую позицию в нем вперед на число записанных байтов.

(Унаследовано от Stream)
WriteAsync(Byte[], Int32, Int32)

Асинхронно записывает последовательность байтов в текущий поток и перемещает текущую позицию внутри потока на число записанных байтов.

(Унаследовано от Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию внутри потока на число записанных байтов и отслеживает запросы отмены.

(Унаследовано от Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию внутри потока на число записанных байтов и отслеживает запросы отмены.

(Унаследовано от Stream)
WriteByte(Byte)

Записывает байт в текущее положение в потоке и перемещает позицию в потоке вперед на один байт.

(Унаследовано от Stream)

Явные реализации интерфейса

IDisposable.Dispose()

Освобождает все ресурсы, занятые модулем Stream.

(Унаследовано от Stream)

Методы расширения

CopyToAsync(Stream, PipeWriter, CancellationToken)

Асинхронно считывает байты из Stream и записывает их в указанный PipeWriter, используя токен отмены.

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