FileRecordSequence Constructors

Definitie

Initialiseert een nieuw exemplaar van de FileRecordSequence klasse.

Overloads

Name Description
FileRecordSequence(String)

Initialiseert een nieuw exemplaar van de FileRecordSequence klasse met een opgegeven bestand.

FileRecordSequence(String, FileAccess)

Initialiseert een nieuw exemplaar van de FileRecordSequence klasse met een opgegeven bestand en een toegangsmodus.

FileRecordSequence(String, FileAccess, Int32)

Initialiseert een nieuw exemplaar van de FileRecordSequence klasse met een opgegeven bestand, een toegangsmodus en een bestandsgrootte.

FileRecordSequence(String)

Initialiseert een nieuw exemplaar van de FileRecordSequence klasse met een opgegeven bestand.

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)

Parameters

path
String

Een relatief of absoluut pad voor het bestand dat door dit FileRecordSequence exemplaar wordt ingekapseld.

Uitzonderingen

Het bestand dat is opgegeven door path , is ongeldig.

Het bestand dat is opgegeven door path kan niet worden gevonden.

De aanvraag kan niet worden uitgevoerd vanwege een onverwachte I/O-uitzondering.

Er is onvoldoende geheugen om door te gaan met de uitvoering van het programma.

De toegang voor het opgegeven logboekarchief wordt geweigerd door het besturingssysteem.

Voorbeelden

In het volgende voorbeeld wordt een recordreeks gemaakt, wordt er een record aan toegevoegd, worden de records gelezen en wordt de reeks definitief verwijderd.


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

Opmerkingen

Met deze constructor wordt lees-/schrijftoegang tot het bestand gemaakt en wordt het bestand geopend met leestoegang tot share. Dit betekent dat aanvragen om het bestand te openen voor schrijven door dit of een ander proces mislukt totdat dit FileRecordSequence exemplaar is verwijderd, maar leespogingen slaagt. Als path het bestand niet wordt gevonden, wordt er een nieuw bestand gemaakt met een grootte van 0 bytes.

Van toepassing op

FileRecordSequence(String, FileAccess)

Initialiseert een nieuw exemplaar van de FileRecordSequence klasse met een opgegeven bestand en een toegangsmodus.

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)

Parameters

path
String

Een relatief of absoluut pad voor het bestand dat door dit FileRecordSequence exemplaar wordt ingekapseld.

access
FileAccess

Een geldige FileAccess waarde waarmee wordt bepaald welk type toegang gebruikers hebben tot een logboekbestand.

Uitzonderingen

Het bestand dat is opgegeven door path , is ongeldig.

Het bestand dat is opgegeven door path kan niet worden gevonden.

De aanvraag kan niet worden uitgevoerd vanwege een onverwachte I/O-uitzondering.

Er is onvoldoende geheugen om door te gaan met de uitvoering van het programma.

De toegang voor het opgegeven logboekarchief wordt geweigerd door het besturingssysteem.

Van toepassing op

FileRecordSequence(String, FileAccess, Int32)

Initialiseert een nieuw exemplaar van de FileRecordSequence klasse met een opgegeven bestand, een toegangsmodus en een bestandsgrootte.

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)

Parameters

path
String

Een relatief of absoluut pad voor het bestand dat door dit FileRecordSequence exemplaar wordt ingekapseld.

access
FileAccess

Een geldige FileAccess waarde waarmee wordt bepaald welk type toegang gebruikers hebben tot een logboekbestand.

size
Int32

De grootte van het logboekbestand dat moet worden geopend.

Uitzonderingen

Een of meer van de parameters vallen buiten het geldige bereik.

Het bestand dat is opgegeven door path , is ongeldig.

Het bestand dat is opgegeven door path kan niet worden gevonden.

De aanvraag kan niet worden uitgevoerd vanwege een onverwachte I/O-uitzondering.

Er is onvoldoende geheugen om door te gaan met de uitvoering van het programma.

De toegang voor het opgegeven logboekarchief wordt geweigerd door het besturingssysteem.

Van toepassing op