FileRecordSequence Konstruktoren
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Initialisiert eine neue Instanz der FileRecordSequence-Klasse.
Überlädt
FileRecordSequence(String) |
Initialisiert eine neue Instanz der FileRecordSequence-Klasse mit einer angegebenen Datei. |
FileRecordSequence(String, FileAccess) |
Initialisiert eine neue Instanz der FileRecordSequence-Klasse mit der Angabe einer Datei und eines Zugriffsmodus. |
FileRecordSequence(String, FileAccess, Int32) |
Initialisiert eine neue Instanz der FileRecordSequence-Klasse mit der Angabe einer Datei, eines Zugriffsmodus und einer Dateigröße. |
FileRecordSequence(String)
Initialisiert eine neue Instanz der FileRecordSequence-Klasse mit einer angegebenen Datei.
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)
Parameter
- path
- String
Ein relativer oder absoluter Pfad zu der Datei, die von dieser FileRecordSequence-Instanz gekapselt wird.
Ausnahmen
Die durch path
angegebene Datei ist nicht gültig.
Die durch path
angegebene Datei kann nicht gefunden werden.
Die Anforderung kann aufgrund einer unerwarteten E/A-Ausnahme nicht ausgeführt werden.
Der Arbeitsspeicher reicht nicht aus, um die Ausführung des Programms fortzusetzen.
Der Zugriff auf den angegebenen Protokollspeicher wird vom Betriebssystem verweigert.
Beispiele
Im folgenden Beispiel wird eine Datensatzsequenz erstellt, ein Datensatz angefügt, die Datensätze gelesen und schließlich die Sequenz verworfen.
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
Hinweise
Dieser Konstruktor erstellt Lese-/Schreibzugriff auf die Datei und öffnet die Datei mit freigegebenem Lesezugriff. Das bedeutet, dass Anforderungen zum Öffnen der Datei zum Schreiben durch diesen oder einen anderen Prozess fehlschlagen, bis diese FileRecordSequence-Instanz verworfen wurde, dass Leseversuche jedoch erfolgreich sind. Wenn path
nicht gefunden wird, wird eine neue Datei mit einer Größe von 0 Byte erstellt.
Gilt für:
FileRecordSequence(String, FileAccess)
Initialisiert eine neue Instanz der FileRecordSequence-Klasse mit der Angabe einer Datei und eines Zugriffsmodus.
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)
Parameter
- path
- String
Ein relativer oder absoluter Pfad zu der Datei, die von dieser FileRecordSequence-Instanz gekapselt wird.
- access
- FileAccess
Ein gültiger FileAccess-Wert, der die Art des Zugriffs steuert, den Benutzer auf eine Protokolldatei haben.
Ausnahmen
Die durch path
angegebene Datei ist nicht gültig.
Die durch path
angegebene Datei kann nicht gefunden werden.
Die Anforderung kann aufgrund einer unerwarteten E/A-Ausnahme nicht ausgeführt werden.
Der Arbeitsspeicher reicht nicht aus, um die Ausführung des Programms fortzusetzen.
Der Zugriff auf den angegebenen Protokollspeicher wird vom Betriebssystem verweigert.
Gilt für:
FileRecordSequence(String, FileAccess, Int32)
Initialisiert eine neue Instanz der FileRecordSequence-Klasse mit der Angabe einer Datei, eines Zugriffsmodus und einer Dateigröße.
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)
Parameter
- path
- String
Ein relativer oder absoluter Pfad zu der Datei, die von dieser FileRecordSequence-Instanz gekapselt wird.
- access
- FileAccess
Ein gültiger FileAccess-Wert, der die Art des Zugriffs steuert, den Benutzer auf eine Protokolldatei haben.
- size
- Int32
Die Größe der zu öffnenden Protokolldatei.
Ausnahmen
Ein oder mehrere Parameter liegen außerhalb des gültigen Bereichs.
Die durch path
angegebene Datei ist nicht gültig.
Die durch path
angegebene Datei kann nicht gefunden werden.
Die Anforderung kann aufgrund einer unerwarteten E/A-Ausnahme nicht ausgeführt werden.
Der Arbeitsspeicher reicht nicht aus, um die Ausführung des Programms fortzusetzen.
Der Zugriff auf den angegebenen Protokollspeicher wird vom Betriebssystem verweigert.