OracleBFile Classe

Definizione

Rappresenta un oggetto OracleBFile gestito progettato per l'utilizzo con il tipo di dati BFILE Oracle.Represents a managed OracleBFile object designed to work with the Oracle BFILE data type. Questa classe non può essere ereditata.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
Ereditarietà
Implementazioni

Commenti

Il tipo BFILE di dati Oracle è un LOB tipo di dati Oracle che contiene un riferimento a dati binari con una dimensione massima di 4 gigabyte.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. Un Oracle BFILE è diverso dagli altri tipi LOB di dati Oracle perché i relativi dati vengono archiviati in un file fisico nel sistema operativo invece che nel server.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. Si noti che BFILE il tipo di dati fornisce accesso in sola lettura ai dati.Note that the BFILE data type provides read-only access to data. Pertanto, i Stream metodi orientati alla scrittura ereditati dalla classe non sono supportati.Therefore, write-oriented methods inherited from the Stream class are not supported.

Le altre caratteristiche di BFILE un tipo di dati che lo distinguono da un LOB tipo di dati sono:Other characteristics of a BFILE data type that distinguish it from a LOB data type are that it:

  • Contiene dati non strutturati.Contains unstructured data.

  • Supporta il chunking sul lato server.Supports server-side chunking.

  • Usa la semantica di copia di riferimenti.Uses reference copy semantics. Se, ad esempio, si esegue un'operazione di copia BFILEsu un oggetto BFILE , viene copiato solo il localizzatore (ovvero un riferimento al file).For example, if you perform a copy operation on a BFILE, only the BFILE locator (which is a reference to the file) is copied. I dati nel file non vengono copiati.The data in the file is not copied.

Il BFILE tipo di dati deve essere utilizzato per LOBfare riferimento a che sono di grandi dimensioni e pertanto non è pratico archiviarlo nel database.The BFILE data type should be used for referencing LOBs that are large in size, and therefore, not practical to store in the database. Per l'utilizzo di un tipo di dati rispetto al tipo di BFILE dati, si verifica un LOB sovraccarico del client, del server e della comunicazione.There is client, server, and communication overhead for using a BFILE data type compared to the LOB data type. È più efficiente accedere a un BFILE se è necessario solo ottenere una piccola quantità di dati.It is more efficient to access a BFILE if you only need to obtain a small amount of data. Se è necessario ottenere l'intero oggetto, è LOBpiù efficiente accedere ai residenti del database.It is more efficient to access database-resident LOBs if you need to obtain the entire object.

Ogni oggetto non null OracleBFile è associato a due entità che definiscono il percorso del file fisico sottostante:Each non-NULL OracleBFile object is associated with two entities that define the location of the underlying physical file:

  • Un oggetto DIRECTORY Oracle, che è un alias del database per una directory nel file system eAn Oracle DIRECTORY object, which is a database alias for a directory in the file system, and

  • Il nome del file fisico sottostante, che si trova nella directory associata all'oggetto DIRECTORY.The file name of the underlying physical file, which is located in the directory associated with the DIRECTORY object.

Dopo la BFILE creazione di un OracleBFile oggetto, è possibile recuperare il relativo localizzatore sotto forma di oggetto ExecuteReader usando ExecuteScalar i metodi o.After a BFILE is created, you can retrieve its locator in the form of an OracleBFile object using the ExecuteReader or ExecuteScalar methods.

Per ottenere un OracleBFile oggetto, chiamare il GetOracleBFile metodo.To obtain an OracleBFile object, call the GetOracleBFile method.

Il file fisico a cui OracleBFile è associato un oggetto non deve esistere fino a quando non si tenta di accedervi.The physical file that an OracleBFile object is associated with does not need to exist until you attempt to access it. Un'applicazione può associare un OracleBFile a un file inesistente, creare il file fisico nel percorso previsto, quindi chiamare. ReadAn application can bind an OracleBFile to a nonexistent file, create the physical file in the expected location, and then call Read.

Qualsiasi tentativo di accedere a un OracleBFile oggetto chiuso Read mediante Seek i metodi o riapre OracleBFile automaticamente un flusso.Any attempt to access a closed OracleBFile using the Read or Seek methods reopens an OracleBFile stream automatically.

Nell'esempio C# seguente viene illustrato come creare un BFILE OracleBFile oggetto in una tabella Oracle e quindi recuperarlo sotto forma di oggetto.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. Nell'esempio viene illustrato l'utilizzo dell' OracleDataReader oggetto e dei OracleBFile Seek metodi Read e.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;
}

Per ulteriori informazioni sulla creazione e sull'utilizzo di BFILEun Oracle, vedere l'argomento appropriato nella documentazione di Oracle.For more information about creating and using an Oracle BFILE, see the appropriate topic in your Oracle documentation.

Nota

I BeginWritemetodi EndWrite, e WriteByte , che vengono ereditati dalla System.IO.Stream classe, non sono supportati perché il BFILE tipo di dati è di sola lettura.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.

Campi

Null

Rappresenta un oggetto OracleBFile null non associato a un file fisico.Represents a null OracleBFile object that is not bound to a physical file.

Proprietà

CanRead

Ottiene un valore che indica se è possibile leggere il flusso del tipo di dati BFILE.Gets a value indicating whether the BFILE stream can be read.

CanSeek

Ottiene un valore che indica se è possibile eseguire operazioni di ricerca avanti e indietro.Gets a value indicating whether forward-seek and backward-seek operations can be performed.

CanTimeout

Ottiene un valore che determina se il flusso corrente prevede il timeout.Gets a value that determines whether the current stream can time out.

(Ereditato da Stream)
CanWrite

Ottiene un valore che indica se l'oggetto supporta la scrittura.Gets a value indicating whether the object supports writing.

Connection

Ottiene l'oggetto OracleConnection utilizzato da questa istanza dell'oggetto OracleBFile.Gets the OracleConnection used by this instance of the OracleBFile.

DirectoryName

Ottiene il nome dell'oggetto DIRECTORY, a cui è associato un oggetto OracleBFile.Gets the name of the DIRECTORY object, with which an OracleBFile object is associated.

FileExists

Ottiene un valore che indica se un file fisico contenente dati BFILE è presente nel sistema operativo.Gets a value indicating whether a physical file containing BFILE data exists in the operating system.

FileName

Ottiene il nome del BFILE senza percorso.Gets the name of the BFILE without the path.

IsNull

Ottiene un valore che indica se l'oggetto OracleBFile è un flusso Null.Gets a value that indicates whether the OracleBFile is a Null stream.

Length

Ottiene un valore che restituisce la lunghezza in byte del file fisico a cui è associato l'oggetto OracleBFile.Gets a value that returns the length in bytes of the physical file with which the OracleBFile object is associated.

Position

Ottiene la posizione di lettura corrente nel flusso OracleBFile.Gets the current read position in the OracleBFile stream.

ReadTimeout

Ottiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la lettura prima del timeout.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(Ereditato da Stream)
Value

Ottiene un oggetto Array di tipo Byte che contiene i dati OracleBFile.Gets an Array of type Byte that contains the OracleBFile data.

WriteTimeout

Ottiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la scrittura prima del timeout.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(Ereditato da Stream)

Metodi

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

Inizia un'operazione di lettura asincrona.Begins an asynchronous read operation. (In alternativa, si consideri l'uso di ReadAsync(Byte[], Int32, Int32).)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Ereditato da Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Inizia un'operazione di scrittura asincrona.Begins an asynchronous write operation. (In alternativa, si consideri l'uso di WriteAsync(Byte[], Int32, Int32).)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Ereditato da Stream)
Clone()

Consente di creare una copia di questo oggetto OracleBFile associato allo stesso file fisico dell'originale.Creates a copy of this OracleBFile object associated with the same physical file as the original.

Close()

Chiude il flusso corrente e libera le risorse, come socket e handle di file, ad esso associate.Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream. Anziché chiamare questo metodo, assicurarsi che il flusso sia eliminato correttamente.Instead of calling this method, ensure that the stream is properly disposed.

(Ereditato da Stream)
CopyTo(Int64, OracleLob, Int64, Int64)

Consente di copiare da questo oggetto OracleBFile in un oggetto OracleLob di destinazione con la quantità di dati specificata, l'offset di origine e quello di destinazione.Copies from this OracleBFile to a destination OracleLob with the specified amount of data, the source offset, and the destination offset.

CopyTo(OracleLob)

Consente di copiare l'intero contenuto di questo oggetto OracleBFile all'inizio di un oggetto OracleLob di destinazione.Copies the entire contents of this OracleBFile to the beginning of a destination OracleLob.

CopyTo(OracleLob, Int64)

Consente di copiare l'intero contenuto di questo oggetto OracleBFile in un oggetto OracleLob di destinazione all'offset specificato.Copies the entire contents of this OracleBFile to a destination OracleLob at the specified offset.

CopyTo(Stream)

Legge i byte dal flusso corrente e li scrive in un altro flusso.Reads the bytes from the current stream and writes them to another stream.

(Ereditato da Stream)
CopyTo(Stream, Int32)

Legge tutti i byte dal flusso corrente e li scrive in un altro flusso, usando una dimensione di buffer specificata.Reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Ereditato da Stream)
CopyToAsync(Stream)

Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso.Asynchronously reads the bytes from the current stream and writes them to another stream.

(Ereditato da Stream)
CopyToAsync(Stream, CancellationToken)

Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso, usando un token di annullamento specificato.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(Ereditato da Stream)
CopyToAsync(Stream, Int32)

Legge in modo asincrono tutti i byte dal flusso corrente e li scrive in un altro flusso, utilizzando una dimensione di buffer specificata.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Ereditato da Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso, usando una dimensione di buffer specificata e un token di annullamento.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.

(Ereditato da Stream)
CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Ereditato da MarshalByRefObject)
CreateWaitHandle()

Alloca un oggetto WaitHandle.Allocates a WaitHandle object.

(Ereditato da Stream)
Dispose()

Rilascia tutte le risorse utilizzate da questo oggetto.Releases all the resources that are used by this object.

Dispose(Boolean)

Rilascia le risorse non gestite usate da Stream e, facoltativamente, le risorse gestite.Releases the unmanaged resources used by the Stream and optionally releases the managed resources.

(Ereditato da Stream)
DisposeAsync()

Consente di liberare in modo asincrono le risorse non gestite utilizzate da Stream.Asynchronously releases the unmanaged resources used by the Stream.

(Ereditato da Stream)
EndRead(IAsyncResult)

Attende il completamento della lettura asincrona in sospeso.Waits for the pending asynchronous read to complete. (In alternativa, si consideri l'uso di ReadAsync(Byte[], Int32, Int32).)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Ereditato da Stream)
EndWrite(IAsyncResult)

Termina un'operazione di scrittura asincrona.Ends an asynchronous write operation. (In alternativa, si consideri l'uso di WriteAsync(Byte[], Int32, Int32).)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Ereditato da Stream)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
Flush()

Non è attualmente supportato.Not currently supported.

FlushAsync()

Cancella in modo asincrono i dati di tutti i buffer del flusso e determina la scrittura dei dati memorizzati nel buffer nel dispositivo sottostante.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(Ereditato da Stream)
FlushAsync(CancellationToken)

Cancella in modo asincrono i dati di tutti i buffer del flusso, determina la scrittura dei dati memorizzati nel buffer nel dispositivo sottostante e monitora le richieste di annullamento.Asynchronously clears all buffers for this stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests.

(Ereditato da Stream)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetLifetimeService()

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Ereditato da MarshalByRefObject)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
InitializeLifetimeService()

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.Obtains a lifetime service object to control the lifetime policy for this instance.

(Ereditato da MarshalByRefObject)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.Creates a shallow copy of the current MarshalByRefObject object.

(Ereditato da MarshalByRefObject)
ObjectInvariant()

Fornisce supporto per un oggetto Contract.Provides support for a Contract.

(Ereditato da Stream)
Read(Byte[], Int32, Int32)

Consente di leggere una sequenza di byte dal flusso OracleBFile corrente e di passare alla posizione successiva all'interno del flusso in base al numero di byte letti.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>)

Quando ne viene eseguito l'override in una classe derivata, legge una sequenza di byte dal flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte letti.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.

(Ereditato da Stream)
ReadAsync(Byte[], Int32, Int32)

Legge in modo asincrono una sequenza di byte dal flusso corrente e passa alla posizione successiva nel flusso in base al numero di byte letti.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Ereditato da Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Legge in modo asincrono una sequenza di byte dal flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte letti e monitora le richieste di annullamento.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.

(Ereditato da Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Legge in modo asincrono una sequenza di byte dal flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte letti e monitora le richieste di annullamento.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.

(Ereditato da Stream)
ReadByte()

Legge un byte dal flusso e sposta in avanti la posizione corrente all'interno del flusso di un byte o restituisce -1 se si trova alla fine del flusso.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.

(Ereditato da Stream)
Seek(Int64, SeekOrigin)

Imposta la posizione sul flusso OracleBFile corrente.Sets the position on the current OracleBFile stream.

SetFileName(String, String)

Associa l'oggetto OracleBFile a un altro file nel sistema operativo.Binds the OracleBFile object to a different file in the operating system.

SetLength(Int64)

Non è attualmente supportato.Not currently supported.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)
Write(Byte[], Int32, Int32)

Non è attualmente supportato.Not currently supported.

Write(ReadOnlySpan<Byte>)

Quando ne viene eseguito l'override in una classe derivata, scrive una sequenza di byte nel flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte scritti.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.

(Ereditato da Stream)
WriteAsync(Byte[], Int32, Int32)

Scrive in modo asincrono una sequenza di byte nel flusso corrente e passa alla posizione successiva nel flusso in base al numero di byte scritti.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Ereditato da Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Scrive in modo asincrono una sequenza di byte nel flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte scritti e monitora le richieste di annullamento.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.

(Ereditato da Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Scrive in modo asincrono una sequenza di byte nel flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte scritti e monitora le richieste di annullamento.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.

(Ereditato da Stream)
WriteByte(Byte)

Scrive un byte nella posizione corrente del flusso e sposta in avanti di un byte la posizione del flusso.Writes a byte to the current position in the stream and advances the position within the stream by one byte.

(Ereditato da Stream)

Implementazioni dell'interfaccia esplicita

IDisposable.Dispose()

Rilascia tutte le risorse usate da Stream.Releases all resources used by the Stream.

(Ereditato da Stream)

Si applica a