FileRecordSequence Costruttori
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Inizializza una nuova istanza della classe FileRecordSequence.
Overload
FileRecordSequence(String) |
Inizializza una nuova istanza della classe FileRecordSequence con un file specificato. |
FileRecordSequence(String, FileAccess) |
Inizializza una nuova istanza della classe FileRecordSequence con il file e la modalità di accesso specificati. |
FileRecordSequence(String, FileAccess, Int32) |
Inizializza una nuova istanza della classe FileRecordSequence con il file, la modalità di accesso e la dimensione del file specificati. |
FileRecordSequence(String)
Inizializza una nuova istanza della classe FileRecordSequence con un file specificato.
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)
Parametri
- path
- String
Percorso relativo o assoluto per il file che sarà incapsulato da questa istanza di FileRecordSequence.
Eccezioni
Il file specificato da path
non è valido.
Non è possibile trovare il file specificato da path
.
Impossibile eseguire la richiesta a causa di un'eccezione I/O imprevista.
Memoria insufficiente per continuare l'esecuzione del programma.
L'accesso per l'archivio dei registri specificato viene negato dal sistema operativo.
Esempio
Nell'esempio seguente viene creata una sequenza di record, aggiunge un record, legge i record e infine elimina la sequenza.
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
Commenti
Questo costruttore crea accesso in lettura/scrittura al file e apre il file con accesso in lettura condiviso. Ciò significa che le richieste di apertura del file per la scrittura provenienti da questo o da un altro processo non vengono soddisfatte se questa istanza di FileRecordSequence non viene eliminata, mentre i tentativi di lettura hanno esito positivo. Se path
non viene trovato, verrà creato un file nuovo di 0 byte di dimensione.
Si applica a
FileRecordSequence(String, FileAccess)
Inizializza una nuova istanza della classe FileRecordSequence con il file e la modalità di accesso specificati.
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)
Parametri
- path
- String
Percorso relativo o assoluto per il file che sarà incapsulato da questa istanza di FileRecordSequence.
- access
- FileAccess
Valore FileAccess valido che controlla il tipo di accesso goduto dagli utenti rispetto a un file di log.
Eccezioni
Il file specificato da path
non è valido.
Non è possibile trovare il file specificato da path
.
Impossibile eseguire la richiesta a causa di un'eccezione I/O imprevista.
Memoria insufficiente per continuare l'esecuzione del programma.
L'accesso per l'archivio dei registri specificato viene negato dal sistema operativo.
Si applica a
FileRecordSequence(String, FileAccess, Int32)
Inizializza una nuova istanza della classe FileRecordSequence con il file, la modalità di accesso e la dimensione del file specificati.
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)
Parametri
- path
- String
Percorso relativo o assoluto per il file che sarà incapsulato da questa istanza di FileRecordSequence.
- access
- FileAccess
Valore FileAccess valido che controlla il tipo di accesso goduto dagli utenti rispetto a un file di log.
- size
- Int32
Dimensione del file di log da aprire.
Eccezioni
Uno o più parametri non sono compresi nell'intervallo.
Il file specificato da path
non è valido.
Non è possibile trovare il file specificato da path
.
Impossibile eseguire la richiesta a causa di un'eccezione I/O imprevista.
Memoria insufficiente per continuare l'esecuzione del programma.
L'accesso per l'archivio dei registri specificato viene negato dal sistema operativo.