OracleBFile 클래스

정의

Oracle BFILE 데이터 형식으로 작업하도록 설계된 관리되는 OracleBFile 개체를 나타냅니다. 이 클래스는 상속될 수 없습니다.

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 데이터 형식은 최대 크기가 4GB인 이진 데이터에 대한 참조를 포함하는 Oracle BFILELOB 데이터 형식입니다. Oracle BFILE 은 해당 데이터가 서버가 아닌 운영 체제의 물리적 파일에 저장된다는 점에서 다른 Oracle LOB 데이터 형식과 다릅니다. 데이터 형식은 BFILE 데이터에 대한 읽기 전용 액세스를 제공합니다. 따라서 클래스에서 Stream 상속된 쓰기 지향 메서드는 지원되지 않습니다.

데이터 형식과 데이터 형식을 BFILE 구별 LOB 하는 데이터 형식의 다른 특징은 다음과 같습니다.

  • 구조화되지 않은 데이터를 포함합니다.

  • 서버 쪽 청크를 지원합니다.

  • 참조 복사 의미 체계를 사용합니다. 예를 들어 에서 BFILE복사 작업을 수행하는 경우 로케이터(파일에 대한 참조)만 BFILE 복사됩니다. 파일의 데이터는 복사되지 않습니다.

데이터 형식은 BFILE 크기가 크므로 데이터베이스에 저장하는 것이 실용적이지 않은 를 참조 LOB하는 데 사용해야 합니다. 데이터 형식과 비교하여 데이터 형식을 사용하기 BFILE 위한 클라이언트, 서버 및 통신 오버헤드가 LOB 있습니다. 적은 양의 데이터만 가져와야 하는 경우 에 액세스 BFILE 하는 것이 더 효율적입니다. 전체 개체를 가져와야 하는 경우 데이터베이스 상주 LOBs에 액세스하는 것이 더 효율적입니다.

NULL OracleBFile 이 아닌 각 개체는 기본 물리적 파일의 위치를 정의하는 두 엔터티와 연결됩니다.

  • 파일 시스템의 디렉터리에 대한 데이터베이스 별명인 Oracle DIRECTORY 개체 및

  • DIRECTORY 개체와 연결된 디렉터리에 있는 기본 물리적 파일의 파일 이름입니다.

BFILE 만든 후에는 또는 ExecuteScalar 메서드를 사용하여 개체 형식으로 OracleBFile 로케이터를 검색할 ExecuteReader 수 있습니다.

가져올는 OracleBFile 개체를 호출 합니다 GetOracleBFile 메서드.

개체가 OracleBFile 연결된 실제 파일은 액세스를 시도할 때까지 존재할 필요가 없습니다. 애플리케이션에 바인딩할 수 있는 OracleBFile 존재 하지 않는 파일에 필요한 위치에 물리적 파일을 만들고 다음 호출 Read합니다.

또는 Seek 메서드를 사용하여 Read 닫힌 OracleBFile 에 액세스하려는 시도는 스트림을 OracleBFile 자동으로 다시 엽니다.

다음 C# 예제에서는 Oracle 테이블에서 를 BFILE 만든 다음 개체 형식 OracleBFile 으로 검색하는 방법을 보여 줍니다. 이 예제에서는 개체 및 및 Read 메서드를 OracleDataReader 사용하는 방법을 OracleBFileSeek 보여 줍니다.

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을 만들고 사용하는 방법에 대한 자세한 내용은 Oracle BFILE설명서의 적절한 항목을 참조하세요.

참고

데이터 형식이 BeginWrite읽기 전용이므로 클래스에서 System.IO.Stream 상속되는 , EndWriteWriteByte 메서드는 지원 BFILE 되지 않습니다.

필드

Null

실제 파일에 바인딩되지 않는 null OracleBFile 개체를 나타냅니다.

속성

CanRead

BFILE 스트림을 읽을 수 있는지 여부를 나타내는 값을 가져옵니다.

CanSeek

앞으로 검색 및 뒤로 검색 작업이 수행될 수 있는지 여부를 나타내는 값을 가져옵니다.

CanTimeout

현재 스트림이 시간 초과될 수 있는지를 결정하는 값을 가져옵니다.

(다음에서 상속됨 Stream)
CanWrite

개체가 쓰기를 지원하는지 여부를 나타내는 값을 가져옵니다.

Connection

OracleConnection의 이 인스턴스에서 사용되는 OracleBFile을 가져옵니다.

DirectoryName

OracleBFile 개체와 관련된 DIRECTORY 개체의 이름을 가져옵니다.

FileExists

운영 체제에 BFILE 데이터를 포함하는 실제 파일이 있는지 여부를 나타내는 값을 가져옵니다.

FileName

경로가 없는 BFILE 이름을 가져옵니다.

IsNull

OracleBFileNull 스트림인지 여부를 나타내는 값을 가져옵니다.

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)

스트림의 현재 위치에 바이트를 쓰고 스트림 내 위치를 1바이트씩 앞으로 이동합니다.

(다음에서 상속됨 Stream)

명시적 인터페이스 구현

IDisposable.Dispose()

Stream에서 사용하는 모든 리소스를 해제합니다.

(다음에서 상속됨 Stream)

적용 대상