OracleBFile クラス

定義

Oracle の BFILE データ型で動作する、マネージド オブジェクト OracleBFile を表します。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
継承
実装

注釈

Oracle BFILEデータ型は、最大サイズLOBが 4 gb のバイナリデータへの参照を含む oracle データ型です。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.

このデータ型は、サイズが大きくLOB、データベースに格納するのが実用的ではないを参照するために使用する必要があります。 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.

NULL OracleBFile以外の各オブジェクトは、基になる物理ファイルの場所を定義する2つのエンティティに関連付けられています。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.

BFILE作成した後ExecuteReaderは、メソッドまたはExecuteScalarメソッドを使用してOracleBFile 、オブジェクトの形式でロケーターを取得できます。After 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またはOracleBFileメソッドを使用して閉じたにアクセスしようとすると、ストリームが自動的に開かれます。 SeekAny attempt to access a closed OracleBFile using the Read or Seek methods reopens an OracleBFile stream automatically.

次C#の例では、Oracle テーブルでBFILEを作成し、 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.

注意

BeginWrite EndWrite WriteByteクラスからBFILE継承された、、およびの各メソッドは、データ型が読み取り専用であるため、サポートされていません。 System.IO.StreamThe 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

物理ファイルにバインドされていない、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

OracleBFile オブジェクトが関連付けられている DIRECTORY オブジェクトの名前を取得します。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

OracleBFileNull ストリームであるかどうかを示す値を取得します。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 バイトを読み取り、ストリーム内の位置を 1 バイト進めます。ストリームの末尾の場合は -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)

ストリームの現在位置にバイトを書き込み、ストリームの位置を 1 バイトだけ進めます。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)

適用対象