FileRecordSequence Construtores
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Inicializa uma nova instância da FileRecordSequence classe.
Sobrecargas
| Name | Description |
|---|---|
| FileRecordSequence(String) |
Inicializa uma nova instância da FileRecordSequence classe com um ficheiro especificado. |
| FileRecordSequence(String, FileAccess) |
Inicializa uma nova instância da FileRecordSequence classe com um ficheiro especificado e um modo de acesso. |
| FileRecordSequence(String, FileAccess, Int32) |
Inicializa uma nova instância da FileRecordSequence classe com um ficheiro especificado, um modo de acesso e um tamanho de ficheiro. |
FileRecordSequence(String)
Inicializa uma nova instância da FileRecordSequence classe com um ficheiro 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 ficheiro que esta FileRecordSequence instância irá encapsular.
Exceções
O ficheiro especificado por path não é válido.
O ficheiro especificado por path não pode ser encontrado.
O pedido não pode ser realizado devido a uma exceção inesperada de I/O.
Não há memória suficiente para continuar a execução do programa.
O acesso ao armazenamento de registos especificado é negado pelo sistema operativo.
Exemplos
O exemplo seguinte cria uma sequência de registos, acrescenta-lhe registo, lê os registos e, finalmente, elimina 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
Observações
Este construtor cria acesso de leitura/escrita ao ficheiro e abre o ficheiro com acesso partilhado de leitura. Isto significa que os pedidos para abrir o ficheiro para escrita por este ou outro processo falham até que esta FileRecordSequence instância seja eliminada, mas as tentativas de leitura terão sucesso. Se path não for encontrado, é criado um novo ficheiro com um tamanho de 0 bytes.
Aplica-se a
FileRecordSequence(String, FileAccess)
Inicializa uma nova instância da FileRecordSequence classe com um ficheiro 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 ficheiro que esta FileRecordSequence instância irá encapsular.
- access
- FileAccess
Um valor válido FileAccess que controla o tipo de acesso que os utilizadores têm a um ficheiro de registo.
Exceções
O ficheiro especificado por path não é válido.
O ficheiro especificado por path não pode ser encontrado.
O pedido não pode ser realizado devido a uma exceção inesperada de I/O.
Não há memória suficiente para continuar a execução do programa.
O acesso ao armazenamento de registos especificado é negado pelo sistema operativo.
Aplica-se a
FileRecordSequence(String, FileAccess, Int32)
Inicializa uma nova instância da FileRecordSequence classe com um ficheiro especificado, um modo de acesso e um tamanho de ficheiro.
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 ficheiro que esta FileRecordSequence instância irá encapsular.
- access
- FileAccess
Um valor válido FileAccess que controla o tipo de acesso que os utilizadores têm a um ficheiro de registo.
- size
- Int32
O tamanho do ficheiro de registo a ser aberto.
Exceções
Um ou mais dos parâmetros estão fora do intervalo válido.
O ficheiro especificado por path não é válido.
O ficheiro especificado por path não pode ser encontrado.
O pedido não pode ser realizado devido a uma exceção inesperada de I/O.
Não há memória suficiente para continuar a execução do programa.
O acesso ao armazenamento de registos especificado é negado pelo sistema operativo.