FileRecordSequence Konstruktorer
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Initierar en ny instans av FileRecordSequence klassen.
Överlagringar
| Name | Description |
|---|---|
| FileRecordSequence(String) |
Initierar en ny instans av FileRecordSequence klassen med en angiven fil. |
| FileRecordSequence(String, FileAccess) |
Initierar en ny instans av FileRecordSequence klassen med en angiven fil och ett åtkomstläge. |
| FileRecordSequence(String, FileAccess, Int32) |
Initierar en ny instans av FileRecordSequence klassen med en angiven fil, ett åtkomstläge och en filstorlek. |
FileRecordSequence(String)
Initierar en ny instans av FileRecordSequence klassen med en angiven fil.
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)
Parametrar
- path
- String
En relativ eller absolut sökväg för filen som den här FileRecordSequence instansen ska kapsla in.
Undantag
Filen som anges av path är ogiltig.
Det går inte att hitta filen som anges av path .
Det går inte att utföra begäran på grund av ett oväntat I/O-undantag.
Det finns inte tillräckligt med minne för att fortsätta körningen av programmet.
Åtkomst för det angivna loggarkivet nekas av operativsystemet.
Exempel
I följande exempel skapas en postsekvens, posten läggs till i den, posterna läss och sekvensen tas slutligen bort.
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
Kommentarer
Den här konstruktorn skapar läs-/skrivåtkomst till filen och öppnar filen med läsbehörighet för resursen. Det innebär att begäranden om att öppna filen för att skrivas av den här eller en annan process misslyckas tills den här FileRecordSequence instansen har tagits bort, men läsförsöken lyckas. Om path inte hittas skapas en ny fil med storleken 0 byte.
Gäller för
FileRecordSequence(String, FileAccess)
Initierar en ny instans av FileRecordSequence klassen med en angiven fil och ett åtkomstläge.
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)
Parametrar
- path
- String
En relativ eller absolut sökväg för filen som den här FileRecordSequence instansen ska kapsla in.
- access
- FileAccess
Ett giltigt FileAccess värde som styr vilken typ av åtkomst användarna har till en loggfil.
Undantag
Filen som anges av path är ogiltig.
Det går inte att hitta filen som anges av path .
Det går inte att utföra begäran på grund av ett oväntat I/O-undantag.
Det finns inte tillräckligt med minne för att fortsätta körningen av programmet.
Åtkomst för det angivna loggarkivet nekas av operativsystemet.
Gäller för
FileRecordSequence(String, FileAccess, Int32)
Initierar en ny instans av FileRecordSequence klassen med en angiven fil, ett åtkomstläge och en filstorlek.
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)
Parametrar
- path
- String
En relativ eller absolut sökväg för filen som den här FileRecordSequence instansen ska kapsla in.
- access
- FileAccess
Ett giltigt FileAccess värde som styr vilken typ av åtkomst användarna har till en loggfil.
- size
- Int32
Storleken på loggfilen som ska öppnas.
Undantag
En eller flera av parametrarna ligger inom det giltiga intervallet.
Filen som anges av path är ogiltig.
Det går inte att hitta filen som anges av path .
Det går inte att utföra begäran på grund av ett oväntat I/O-undantag.
Det finns inte tillräckligt med minne för att fortsätta körningen av programmet.
Åtkomst för det angivna loggarkivet nekas av operativsystemet.