FileRecordSequence Construtores
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Inicializa uma nova instância da classe FileRecordSequence.
Sobrecargas
FileRecordSequence(String) |
Inicializa uma nova instância da classe FileRecordSequence com um arquivo especificado. |
FileRecordSequence(String, FileAccess) |
Inicializa uma nova instância da classe FileRecordSequence com um arquivo especificado e um modo de acesso. |
FileRecordSequence(String, FileAccess, Int32) |
Inicializa uma nova instância da classe FileRecordSequence com um arquivo especificado, um modo de acesso e um tamanho do arquivo. |
FileRecordSequence(String)
Inicializa uma nova instância da classe FileRecordSequence com um arquivo 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
Um caminho relativo ou absoluto para o arquivo que essa instância de FileRecordSequence encapsulará.
Exceções
O arquivo especificado por path
não é válido.
O arquivo especificado por path
não foi encontrado.
A solicitação não pode ser executada devido a uma exceção de E/S inesperada.
Não há memória suficiente para continuar a execução do programa.
O acesso ao repositório de log especificado é negado pelo sistema operacional.
Exemplos
O exemplo a seguir cria uma sequência de registros, acrescenta o registro a ela, lê os registros e, por fim, descarta a sequência.
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
Comentários
Esse construtor cria acesso de leitura/gravação ao arquivo e abre o arquivo com acesso de leitura de compartilhamento. Isso significa que as solicitações para abrir o arquivo para gravação por esse ou outro processo falham até que essa FileRecordSequence instância tenha sido descartada, mas as tentativas de leitura serão bem-sucedidas. Se path
não for encontrado, um novo arquivo será criado com um tamanho de 0 bytes.
Aplica-se a
FileRecordSequence(String, FileAccess)
Inicializa uma nova instância da classe FileRecordSequence com um arquivo especificado e um modo de acesso.
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
Um caminho relativo ou absoluto para o arquivo que essa instância de FileRecordSequence encapsulará.
- access
- FileAccess
Um valor válido FileAccess valor que controla o tipo de acesso que os usuários têm a um arquivo de log.
Exceções
O arquivo especificado por path
não é válido.
O arquivo especificado por path
não foi encontrado.
A solicitação não pode ser executada devido a uma exceção de E/S inesperada.
Não há memória suficiente para continuar a execução do programa.
O acesso ao repositório de log especificado é negado pelo sistema operacional.
Aplica-se a
FileRecordSequence(String, FileAccess, Int32)
Inicializa uma nova instância da classe FileRecordSequence com um arquivo especificado, um modo de acesso e um tamanho do arquivo.
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
Um caminho relativo ou absoluto para o arquivo que essa instância de FileRecordSequence encapsulará.
- access
- FileAccess
Um valor válido FileAccess valor que controla o tipo de acesso que os usuários têm a um arquivo de log.
- size
- Int32
O tamanho do arquivo de log a abrir.
Exceções
Um ou mais dos parâmetros estão fora do intervalo válido.
O arquivo especificado por path
não é válido.
O arquivo especificado por path
não foi encontrado.
A solicitação não pode ser executada devido a uma exceção de E/S inesperada.
Não há memória suficiente para continuar a execução do programa.
O acesso ao repositório de log especificado é negado pelo sistema operacional.