FileRecordSequence Constructores
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Inicializa una nueva instancia de la clase FileRecordSequence.
Sobrecargas
FileRecordSequence(String) |
Inicializa una nueva instancia de la clase FileRecordSequence con un archivo especificado. |
FileRecordSequence(String, FileAccess) |
Inicializa una nueva instancia de la clase FileRecordSequence con un archivo especificado y un modo de acceso. |
FileRecordSequence(String, FileAccess, Int32) |
Inicializa una nueva instancia de la clase FileRecordSequence con un archivo especificado, un modo de acceso y un tamaño de archivo. |
FileRecordSequence(String)
Inicializa una nueva instancia de la clase FileRecordSequence 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 relativa o absoluta del archivo que va a encapsular esta instancia de FileRecordSequence.
Excepciones
El archivo especificado por la path
no es válido.
No se encuentra el archivo especificado por path
.
La solicitud no se puede realizar debido a una excepción de E/S inesperada.
No hay bastante memoria para continuar la ejecución del programa.
El acceso al almacén del registro especificado ha sido denegado por el sistema operativo.
Ejemplos
En el ejemplo siguiente se crea una secuencia de registros, se anexa un 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 el acceso de lectura y escritura al archivo y abre el archivo con acceso de lectura del recurso compartido. Esto significa que las solicitudes que este u otro proceso realicen para abrir el archivo para su escritura producen un error hasta que se haya eliminado esta instancia de FileRecordSequence, pero los intentos de lectura se realizarán con éxito. Si no se encuentra path
, se crea un nuevo archivo con un tamaño de 0 bytes.
Se aplica a
FileRecordSequence(String, FileAccess)
Inicializa una nueva instancia de la clase FileRecordSequence 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 relativa o absoluta del archivo que va a encapsular esta instancia de FileRecordSequence.
- access
- FileAccess
Un valor de FileAccess válido que controla el tipo de acceso que tienen los usuarios a un archivo de registro.
Excepciones
El archivo especificado por la path
no es válido.
No se encuentra el archivo especificado por path
.
La solicitud no se puede realizar debido a una excepción de E/S inesperada.
No hay bastante memoria para continuar la ejecución del programa.
El acceso al almacén del registro especificado ha sido denegado por el sistema operativo.
Se aplica a
FileRecordSequence(String, FileAccess, Int32)
Inicializa una nueva instancia de la clase FileRecordSequence 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 relativa o absoluta del archivo que va a encapsular esta instancia de FileRecordSequence.
- access
- FileAccess
Un valor de FileAccess válido que controla el tipo de acceso que tienen los usuarios a un archivo de registro.
- size
- Int32
El tamaño del archivo de registro que se va a abrir.
Excepciones
Uno o varios parámetros están fuera del intervalo válido.
El archivo especificado por la path
no es válido.
No se encuentra el archivo especificado por path
.
La solicitud no se puede realizar debido a una excepción de E/S inesperada.
No hay bastante memoria para continuar la ejecución del programa.
El acceso al almacén del registro especificado ha sido denegado por el sistema operativo.