OracleBFile Класс

Определение

Представляет управляемый объект OracleBFile, предназначенный для работы с типом данных Oracle BFILE.Represents a managed OracleBFile object designed to work with the Oracle BFILE data type. Этот класс не наследуется.This class cannot be inherited.

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 INullable
    interface IDisposable
Public NotInheritable Class OracleBFile
Inherits Stream
Implements ICloneable, INullable
Наследование
Реализации

Комментарии

Тип данных BFILE Oracle — это тип данных LOB Oracle, который содержит ссылку на двоичные данные с максимальным размером 4 гигабайта.The Oracle BFILE data type is an Oracle LOB data type that contains a reference to binary data with a maximum size of 4 gigabytes. Oracle BFILE отличается от других типов данных LOB Oracle тем, что его данные хранятся в физическом файле операционной системы, а не на сервере.An Oracle BFILE differs from other Oracle LOB data types in that its data is stored in a physical file in the operating system instead of on the server. Обратите внимание BFILE , что тип данных предоставляет доступ только для чтения к данным.Note that the BFILE data type provides read-only access to data. Таким образом, ориентированные на запись методы, Stream унаследованные от класса, не поддерживаются.Therefore, write-oriented methods inherited from the Stream class are not supported.

Другие характеристики BFILE типа данных, которые отличают его LOB от типа данных:Other characteristics of a BFILE data type that distinguish it from a LOB data type are that it:

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

  • поддерживает обработку данных на сервере в виде фрагментов;Supports server-side chunking.

  • использует ссылочную семантику копирования.Uses reference copy semantics. Например, если выполняется операция копирования в BFILE, копируется BFILE только указатель (ссылка на файл).For example, if you perform a copy operation on a BFILE, only the BFILE locator (which is a reference to the file) is copied. Данные файла не копируются.The data in the file is not copied.

Тип данных следует использовать для ссылок на LOBs, которые имеют большой размер и поэтому непрактично хранить в базе данных. BFILEThe BFILE data type should be used for referencing LOBs that are large in size, and therefore, not practical to store in the database. Для использования BFILE типа данных по сравнению с типом LOB данных необходимо накладные расходы клиента, сервера и связи.There is client, server, and communication overhead for using a BFILE data type compared to the LOB data type. Более эффективно обращаться к, BFILE если нужно получить лишь небольшой объем данных.It is more efficient to access a BFILE if you only need to obtain a small amount of data. Доступ к резидентным LOBбазам данных более эффективен, если необходимо получить весь объект.It is more efficient to access database-resident LOBs if you need to obtain the entire object.

Каждый объект, отличный OracleBFile от NULL, связан с двумя сущностями, которые определяют расположение базового физического файла:Each non-NULL OracleBFile object is associated with two entities that define the location of the underlying physical file:

  • Объект Oracle DIRECTORY, который является псевдонимом базы данных для каталога в файловой системе.An Oracle DIRECTORY object, which is a database alias for a directory in the file system, and

  • Имя файла базового физического файла, расположенного в каталоге, связанном с объектом DIRECTORY.The file name of the underlying physical file, which is located in the directory associated with the DIRECTORY object.

После создания можно получить его указатель в виде OracleBFile объекта с помощью ExecuteReader методов или ExecuteScalar. BFILEAfter a BFILE is created, you can retrieve its locator in the form of an OracleBFile object using the ExecuteReader or ExecuteScalar methods.

Чтобы получить OracleBFile объект, GetOracleBFile вызовите метод.To obtain an OracleBFile object, call the GetOracleBFile method.

Физический файл, с которым OracleBFile связан объект, не должен существовать, пока вы не попытаетесь получить к нему доступ.The physical file that an OracleBFile object is associated with does not need to exist until you attempt to access it. Приложение может привязать OracleBFile к несуществующему файлу, создать физический файл в ожидаемом расположении и затем вызвать Read.An application can bind an OracleBFile to a nonexistent file, create the physical file in the expected location, and then call Read.

Любая попытка доступа OracleBFile к закрытому Read с помощью Seek методов или повторно открывает OracleBFile поток автоматически.Any attempt to access a closed OracleBFile using the Read or Seek methods reopens an OracleBFile stream automatically.

В следующем C# примере показано, как можно создать BFILE в таблице Oracle, а затем извлечь ее в виде OracleBFile объекта.The following C# example demonstrates how you can create a BFILE in an Oracle table, and then retrieve it in the form of an OracleBFile object. OracleDataReader В примере демонстрируется использование объекта OracleBFile Seek и методов и Read .The example demonstrates the use of the OracleDataReader object and the OracleBFileSeek and Read methods.

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.For more information about creating and using an Oracle BFILE, see the appropriate topic in your Oracle documentation.

Примечание

System.IO.Stream BFILE Методы BeginWrite, EndWrite иWriteByte , унаследованные от класса, не поддерживаются, так как тип данных доступен только для чтения.The BeginWrite, EndWrite, and WriteByte methods, which are inherited from the System.IO.Stream class, are not supported because the BFILE data type is read-only.

Поля

Null

Представляет пустой объект OracleBFile, который не привязан ни к какому файлу.Represents a null OracleBFile object that is not bound to a physical file.

Свойства

CanRead

Получает значение, определяющее возможность чтения потока BFILE.Gets a value indicating whether the BFILE stream can be read.

CanSeek

Получает значение, показывающее, могут ли быть выполнены операции прямого и обратного поиска.Gets a value indicating whether forward-seek and backward-seek operations can be performed.

CanTimeout

Получает значение, которое показывает, может ли для данного потока истечь время ожидания.Gets a value that determines whether the current stream can time out.

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

Получает значение, показывающее, поддерживает ли объект запись.Gets a value indicating whether the object supports writing.

Connection

Получает OracleConnection, используемый данным экземпляром OracleBFile.Gets the OracleConnection used by this instance of the OracleBFile.

DirectoryName

Получает имя объекта DIRECTORY, с которым связан объект OracleBFile.Gets the name of the DIRECTORY object, with which an OracleBFile object is associated.

FileExists

Получает значение, показывающее, существует ли в операционной системе файл, в котором содержатся данные типа BFILE.Gets a value indicating whether a physical file containing BFILE data exists in the operating system.

FileName

Получает имя BFILE без пути.Gets the name of the BFILE without the path.

IsNull

Получает значение, определяющее, является ли OracleBFile потоком Null.Gets a value that indicates whether the OracleBFile is a Null stream.

Length

Получает значение, возвращающее длину файла, с которым связан объект OracleBFile, в байтах.Gets a value that returns the length in bytes of the physical file with which the OracleBFile object is associated.

Position

Получает текущую позицию чтения в потоке OracleBFile.Gets the current read position in the OracleBFile stream.

ReadTimeout

Возвращает или задает значение в миллисекундах, определяющее период, в течение которого поток будет пытаться выполнить операцию чтения, прежде чем истечет время ожидания.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

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

Получает Array типа Byte, в котором содержатся данные OracleBFile.Gets an Array of type Byte that contains the OracleBFile data.

WriteTimeout

Возвращает или задает значение в миллисекундах, определяющее период, в течение которого поток будет пытаться выполнить операцию записи, прежде чем истечет время ожидания.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

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

Методы

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

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

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

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

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

Создает копию данного объекта OracleBFile, связанную с тем же файлом, что и исходный объект.Creates a copy of this OracleBFile object associated with the same physical file as the original.

Close()

Закрывает текущий поток и отключает все ресурсы (например, сокеты и файловые дескрипторы), связанные с текущим потоком.Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream. Вместо вызова данного метода, убедитесь в том, что поток надлежащим образом ликвидирован.Instead of calling this method, ensure that the stream is properly disposed.

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

Копирует из OracleBFile в объект назначения OracleLob, с заданным объемом данных, смещением источника и смещением объекта назначения.Copies from this OracleBFile to a destination OracleLob with the specified amount of data, the source offset, and the destination offset.

CopyTo(OracleLob)

Копирует все содержимое данного объекта OracleBFile в начало конечного объекта OracleLob.Copies the entire contents of this OracleBFile to the beginning of a destination OracleLob.

CopyTo(OracleLob, Int64)

Копирует все содержимое из OracleBFile в конечный объект OracleLob с заданным смещением.Copies the entire contents of this OracleBFile to a destination OracleLob at the specified offset.

CopyTo(Stream)

Считывает байты из текущего потока и записывает их в другой поток.Reads the bytes from the current stream and writes them to another stream.

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

Считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера.Reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

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

Асинхронно считывает байты из текущего потока и записывает их в другой поток.Asynchronously reads the bytes from the current stream and writes them to another stream.

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

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный токен отмены.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

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

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

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

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера и токен отмены.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.

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

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

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

Размещает объект WaitHandle.Allocates a WaitHandle object.

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

Освобождает все ресурсы, используемые данным объектом.Releases all the resources that are used by this object.

Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом Stream, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the Stream and optionally releases the managed resources.

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

Асинхронно освобождает неуправляемые ресурсы, используемые классом Stream.Asynchronously releases the unmanaged resources used by the Stream.

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

Ожидает завершения отложенного асинхронного чтения.Waits for the pending asynchronous read to complete. (Рекомендуется использовать ReadAsync(Byte[], Int32, Int32).)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

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

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

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

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

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

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

FlushAsync()

Асинхронно очищает все буферы для этого потока и вызывает запись всех буферизованных данных в базовое устройство.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

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

Асинхронно очищает все буферы данного потока, вызывает запись буферизованных данных в базовое устройство и отслеживает запросы отмены.Asynchronously clears all buffers for this stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests.

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

Служит в качестве хэш-функции по умолчанию.Serves as the default hash function.

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

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

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

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

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

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.Obtains a lifetime service object to control the lifetime policy for this instance.

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

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

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

Создает неполную копию текущего объекта MarshalByRefObject.Creates a shallow copy of the current MarshalByRefObject object.

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

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

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

Считывает последовательность байтов из текущего потока OracleBFile и перемещает позицию внутри потока на число считанных байтов.Reads a sequence of bytes from the current OracleBFile stream and advances the position within the stream by the number of bytes read.

Read(Span<Byte>)

При переопределении в производном классе считывает последовательность байтов из текущего потока и перемещает позицию в потоке на число считанных байтов.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

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

Асинхронно считывает последовательность байтов из текущего потока и перемещает позицию внутри потока на число считанных байтов.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

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

Асинхронно считывает последовательность байтов из текущего потока, перемещает позицию в потоке на число считанных байтов и отслеживает запросы отмены.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

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

Асинхронно считывает последовательность байтов из текущего потока, перемещает позицию в потоке на число считанных байтов и отслеживает запросы отмены.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

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

Считывает байт из потока и перемещает позицию в потоке на один байт или возвращает -1, если достигнут конец потока.Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream.

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

Задает позицию в текущем потоке OracleBFile.Sets the position on the current OracleBFile stream.

SetFileName(String, String)

Привязывает объект OracleBFile к другому файлу в операционной системе.Binds the OracleBFile object to a different file in the operating system.

SetLength(Int64)

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

ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

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

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

Write(ReadOnlySpan<Byte>)

При переопределении в производном классе записывает последовательность байтов в текущий поток и перемещает текущую позицию в нем вперед на число записанных байтов.When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

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

Асинхронно записывает последовательность байтов в текущий поток и перемещает текущую позицию внутри потока на число записанных байтов.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

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

Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию внутри потока на число записанных байтов и отслеживает запросы отмены.Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

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

Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию внутри потока на число записанных байтов и отслеживает запросы отмены.Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

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

Записывает байт в текущее положение в потоке и перемещает позицию в потоке вперед на один байт.Writes a byte to the current position in the stream and advances the position within the stream by one byte.

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

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

IDisposable.Dispose()

Освобождает все ресурсы, занятые модулем Stream.Releases all resources used by the Stream.

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

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