다음을 통해 공유


FileRecordSequence 생성자

정의

FileRecordSequence 클래스의 새 인스턴스를 초기화합니다.

오버로드

FileRecordSequence(String)

지정된 파일을 사용하여 FileRecordSequence 클래스의 새 인스턴스를 초기화합니다.

FileRecordSequence(String, FileAccess)

지정된 파일과 액세스 모드를 사용하여 FileRecordSequence 클래스의 새 인스턴스를 초기화합니다.

FileRecordSequence(String, FileAccess, Int32)

지정된 파일, 액세스 모드, 파일 크기를 사용하여 FileRecordSequence 클래스의 새 인스턴스를 초기화합니다.

FileRecordSequence(String)

지정된 파일을 사용하여 FileRecordSequence 클래스의 새 인스턴스를 초기화합니다.

public:
 FileRecordSequence(System::String ^ path);
public FileRecordSequence (string path);
new System.IO.Log.FileRecordSequence : string -> System.IO.Log.FileRecordSequence
Public Sub New (path As String)

매개 변수

path
String

FileRecordSequence 인스턴스가 캡슐화할 파일의 상대 또는 절대 경로입니다.

예외

path로 지정된 파일이 잘못된 경우

path으로 지정된 파일을 찾을 수 없는 경우

예기치 않은 I/O 예외 때문에 요청을 수행할 수 없는 경우

메모리가 부족하여 프로그램을 계속 실행할 수 없는 경우

지정된 로그 저장소에 대한 액세스가 운영 체제에서 거부된 경우

예제

다음 예제에서는 레코드 시퀀스를 만들고, 레코드를 추가하고, 레코드를 읽고, 마지막으로 시퀀스를 삭제합니다.


public class MyLog
{
    string logName = "test.log";
    FileRecordSequence sequence = null;
    bool delete = true;

    public MyLog()
    {
    // Create a FileRecordSequence.
        sequence = new FileRecordSequence(logName, FileAccess.ReadWrite);
    }

// Append records to the record sequence.
    public void AppendRecords()
    {
        Console.WriteLine("Appending Log Records...");
        SequenceNumber previous = SequenceNumber.Invalid;

        previous = sequence.Append(CreateData("Hello World!"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush);
        previous = sequence.Append(CreateData("This is my first Logging App"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush);
        previous = sequence.Append(CreateData("Using FileRecordSequence..."), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush);

        Console.WriteLine("Done...");
    }
    
// Read the records added to the log.
    public void ReadRecords()
    {
        Encoding enc = Encoding.Unicode;

        Console.WriteLine();

        Console.WriteLine("Reading Log Records...");
        try
        {
            foreach (LogRecord record in this.sequence.ReadLogRecords(this.sequence.BaseSequenceNumber, LogRecordEnumeratorType.Next))
            {
                byte[] data = new byte[record.Data.Length];
                record.Data.Read(data, 0, (int)record.Data.Length);
                string mystr = enc.GetString(data);
                Console.WriteLine("    {0}", mystr);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception {0} {1}", e.GetType(), e.Message);
        }

        Console.WriteLine();
    }

// Dispose the record sequence and delete the log file.
    public void Cleanup()
    {
    // Dispose the sequence.
        sequence.Dispose();

    // Delete the log file.
        if (delete)
        {
            try
            {
                File.Delete(this.logName);
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception {0} {1}", e.GetType(), e.Message);
            }
        }
    }

// Converts the given data to an Array of ArraySegment<byte>
    public static IList<ArraySegment<byte>> CreateData(string str)
    {
        Encoding enc = Encoding.Unicode;

        byte[] array = enc.GetBytes(str);

        ArraySegment<byte>[] segments = new ArraySegment<byte>[1];
        segments[0] = new ArraySegment<byte>(array);

        return Array.AsReadOnly<ArraySegment<byte>>(segments);
    }
}

class LogSample
{
    static void Main2(string[] args)
    {
        MyLog log = new MyLog();

        log.AppendRecords();
        log.ReadRecords();
        log.Cleanup();
    }
}

Public Class MyLog
    Private logName As String = "test.log"
    Private sequence As FileRecordSequence = Nothing
    Private delete As Boolean = True

    Public Sub New()
    ' Create a FileRecordSequence.
        sequence = New FileRecordSequence(logName, FileAccess.ReadWrite)
    End Sub

' Append records to the record sequence.
    Public Sub AppendRecords()
        Console.WriteLine("Appending Log Records...")
        Dim previous As SequenceNumber = SequenceNumber.Invalid

        previous = sequence.Append(CreateData("Hello World!"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)
        previous = sequence.Append(CreateData("This is my first Logging App"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)
        previous = sequence.Append(CreateData("Using FileRecordSequence..."), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)

        Console.WriteLine("Done...")
    End Sub

' Read the records added to the log. 
    Public Sub ReadRecords()
        Dim enc As Encoding = Encoding.Unicode

        Console.WriteLine()

        Console.WriteLine("Reading Log Records...")
        Try
            For Each record In Me.sequence.ReadLogRecords(Me.sequence.BaseSequenceNumber, LogRecordEnumeratorType.Next)
                Dim data(record.Data.Length - 1) As Byte
                record.Data.Read(data, 0, CInt(Fix(record.Data.Length)))
                Dim mystr As String = enc.GetString(data)
                Console.WriteLine("    {0}", mystr)
            Next record
        Catch e As Exception
            Console.WriteLine("Exception {0} {1}", e.GetType(), e.Message)
        End Try

        Console.WriteLine()
    End Sub

' Dispose the record sequence and delete the log file. 
    Public Sub Cleanup()
    ' Dispose the sequence.
        sequence.Dispose()

    ' Delete the log file.
        If delete Then
            Try
                File.Delete(Me.logName)
            Catch e As Exception
                Console.WriteLine("Exception {0} {1}", e.GetType(), e.Message)
            End Try
        End If
    End Sub

' Converts the given data to an Array of ArraySegment<byte> 
    Public Shared Function CreateData(ByVal str As String) As IList(Of ArraySegment(Of Byte))
        Dim enc As Encoding = Encoding.Unicode

        Dim array() As Byte = enc.GetBytes(str)

        Dim segments(0) As ArraySegment(Of Byte)
        segments(0) = New ArraySegment(Of Byte)(array)

        Return System.Array.AsReadOnly(Of ArraySegment(Of Byte))(segments)
    End Function
End Class

Friend Class LogSample
    Private Shared Sub Main2(ByVal args() As String)
        Dim log As New MyLog()

        log.AppendRecords()
        log.ReadRecords()
        log.Cleanup()
    End Sub
End Class

설명

이 생성자는 파일에 대한 읽기/쓰기 액세스를 만들고 공유 읽기 권한이 있는 파일을 엽니다. 즉, 이 프로세스 또는 다른 프로세스에서 쓰기 위해 파일을 열라는 요청은 이 FileRecordSequence instance 삭제될 때까지 실패하지만 읽기 시도는 성공합니다. 가 없으면 path 0바이트 크기로 새 파일이 만들어집니다.

적용 대상

FileRecordSequence(String, FileAccess)

지정된 파일과 액세스 모드를 사용하여 FileRecordSequence 클래스의 새 인스턴스를 초기화합니다.

public:
 FileRecordSequence(System::String ^ path, System::IO::FileAccess access);
public FileRecordSequence (string path, System.IO.FileAccess access);
new System.IO.Log.FileRecordSequence : string * System.IO.FileAccess -> System.IO.Log.FileRecordSequence
Public Sub New (path As String, access As FileAccess)

매개 변수

path
String

FileRecordSequence 인스턴스가 캡슐화할 파일의 상대 또는 절대 경로입니다.

access
FileAccess

로그 파일에 대한 사용자의 액세스 권한 유형을 제어하는 유효한 FileAccess 값입니다.

예외

path로 지정된 파일이 잘못된 경우

path으로 지정된 파일을 찾을 수 없는 경우

예기치 않은 I/O 예외 때문에 요청을 수행할 수 없는 경우

메모리가 부족하여 프로그램을 계속 실행할 수 없는 경우

지정된 로그 저장소에 대한 액세스가 운영 체제에서 거부된 경우

적용 대상

FileRecordSequence(String, FileAccess, Int32)

지정된 파일, 액세스 모드, 파일 크기를 사용하여 FileRecordSequence 클래스의 새 인스턴스를 초기화합니다.

public:
 FileRecordSequence(System::String ^ path, System::IO::FileAccess access, int size);
public FileRecordSequence (string path, System.IO.FileAccess access, int size);
new System.IO.Log.FileRecordSequence : string * System.IO.FileAccess * int -> System.IO.Log.FileRecordSequence
Public Sub New (path As String, access As FileAccess, size As Integer)

매개 변수

path
String

FileRecordSequence 인스턴스가 캡슐화할 파일의 상대 또는 절대 경로입니다.

access
FileAccess

로그 파일에 대한 사용자의 액세스 권한 유형을 제어하는 유효한 FileAccess 값입니다.

size
Int32

열 로그 파일의 크기입니다.

예외

하나 이상의 매개 변수가 유효 범위를 벗어난 경우

path로 지정된 파일이 잘못된 경우

path으로 지정된 파일을 찾을 수 없는 경우

예기치 않은 I/O 예외 때문에 요청을 수행할 수 없는 경우

메모리가 부족하여 프로그램을 계속 실행할 수 없는 경우

지정된 로그 저장소에 대한 액세스가 운영 체제에서 거부된 경우

적용 대상