FileRecordSequence Constructores

Definición

Inicializa una nueva instancia de la clase FileRecordSequence.

Sobrecargas

Nombre Description
FileRecordSequence(String)

Inicializa una nueva instancia de la FileRecordSequence clase con un archivo especificado.

FileRecordSequence(String, FileAccess)

Inicializa una nueva instancia de la FileRecordSequence clase con un archivo especificado y un modo de acceso.

FileRecordSequence(String, FileAccess, Int32)

Inicializa una nueva instancia de la FileRecordSequence clase con un archivo especificado, un modo de acceso y un tamaño de archivo.

FileRecordSequence(String)

Inicializa una nueva instancia de la FileRecordSequence clase con un archivo especificado.

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)

Parámetros

path
String

Ruta de acceso relativa o absoluta para el archivo que esta FileRecordSequence instancia encapsulará.

Excepciones

El archivo especificado por path no es válido.

No se encuentra el archivo especificado por path .

No se puede realizar la solicitud debido a una excepción de E/S inesperada.

No hay memoria suficiente para continuar con la ejecución del programa.

El sistema operativo deniega el acceso al almacén de registros especificado.

Ejemplos

En el ejemplo siguiente se crea una secuencia de registros, se anexa el registro, se leen los registros y, por último, se elimina la secuencia.


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

Comentarios

Este constructor crea acceso de lectura y escritura al archivo y abre el archivo con acceso de lectura compartido. Esto significa que las solicitudes para abrir el archivo para escribir por este u otro proceso produce un error hasta que esta FileRecordSequence instancia se haya eliminado, pero los intentos de lectura se realizarán correctamente. Si path no se encuentra, se crea un nuevo archivo con un tamaño de 0 bytes.

Se aplica a

FileRecordSequence(String, FileAccess)

Inicializa una nueva instancia de la FileRecordSequence clase con un archivo especificado y un modo de acceso.

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)

Parámetros

path
String

Ruta de acceso relativa o absoluta para el archivo que esta FileRecordSequence instancia encapsulará.

access
FileAccess

Valor válido FileAccess que controla el tipo de acceso que los usuarios tienen en un archivo de registro.

Excepciones

El archivo especificado por path no es válido.

No se encuentra el archivo especificado por path .

No se puede realizar la solicitud debido a una excepción de E/S inesperada.

No hay memoria suficiente para continuar con la ejecución del programa.

El sistema operativo deniega el acceso al almacén de registros especificado.

Se aplica a

FileRecordSequence(String, FileAccess, Int32)

Inicializa una nueva instancia de la FileRecordSequence clase con un archivo especificado, un modo de acceso y un tamaño de archivo.

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)

Parámetros

path
String

Ruta de acceso relativa o absoluta para el archivo que esta FileRecordSequence instancia encapsulará.

access
FileAccess

Valor válido FileAccess que controla el tipo de acceso que los usuarios tienen en un archivo de registro.

size
Int32

Tamaño del archivo de registro que se va a abrir.

Excepciones

Uno o varios de los parámetros están fuera del intervalo válido.

El archivo especificado por path no es válido.

No se encuentra el archivo especificado por path .

No se puede realizar la solicitud debido a una excepción de E/S inesperada.

No hay memoria suficiente para continuar con la ejecución del programa.

El sistema operativo deniega el acceso al almacén de registros especificado.

Se aplica a