FileRecordSequence Konstruktory
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Inicjuje nowe wystąpienie klasy FileRecordSequence.
Przeciążenia
FileRecordSequence(String) |
Inicjuje FileRecordSequence nowe wystąpienie klasy z określonym plikiem. |
FileRecordSequence(String, FileAccess) |
Inicjuje FileRecordSequence nowe wystąpienie klasy z określonym plikiem i trybem dostępu. |
FileRecordSequence(String, FileAccess, Int32) |
Inicjuje FileRecordSequence nowe wystąpienie klasy z określonym plikiem, trybem dostępu i rozmiarem pliku. |
FileRecordSequence(String)
Inicjuje FileRecordSequence nowe wystąpienie klasy z określonym plikiem.
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)
Parametry
- path
- String
Ścieżka względna lub bezwzględna dla pliku, który będzie hermetyzować to FileRecordSequence wystąpienie.
Wyjątki
Plik określony przez path
jest nieprawidłowy.
Nie można odnaleźć pliku określonego przez path
program .
Nie można wykonać żądania z powodu nieoczekiwanego wyjątku we/wy.
Za mało pamięci, aby kontynuować wykonywanie programu.
Dostęp do określonego magazynu dzienników jest odrzucany przez system operacyjny.
Przykłady
Poniższy przykład tworzy sekwencję rekordów, dołącza do niego rekord, odczytuje rekordy, a na koniec usuwa sekwencję.
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
Uwagi
Ten konstruktor tworzy dostęp do odczytu/zapisu do pliku i otwiera plik z udziałem dostęp do odczytu. Oznacza to, że żądania otwarcia pliku do zapisu w tym lub innym procesie kończą się niepowodzeniem, dopóki to FileRecordSequence wystąpienie nie zostanie usunięte, ale próby odczytu powiedzą się. Jeśli path
nie zostanie znaleziony, zostanie utworzony nowy plik o rozmiarze 0 bajtów.
Dotyczy
FileRecordSequence(String, FileAccess)
Inicjuje FileRecordSequence nowe wystąpienie klasy z określonym plikiem i trybem dostępu.
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)
Parametry
- path
- String
Ścieżka względna lub bezwzględna dla pliku, który będzie hermetyzować to FileRecordSequence wystąpienie.
- access
- FileAccess
Prawidłowa FileAccess wartość, która kontroluje rodzaj dostępu użytkowników, musi mieć plik dziennika.
Wyjątki
Plik określony przez path
jest nieprawidłowy.
Nie można odnaleźć pliku określonego przez path
program .
Nie można wykonać żądania z powodu nieoczekiwanego wyjątku we/wy.
Za mało pamięci, aby kontynuować wykonywanie programu.
Dostęp do określonego magazynu dzienników jest odrzucany przez system operacyjny.
Dotyczy
FileRecordSequence(String, FileAccess, Int32)
Inicjuje FileRecordSequence nowe wystąpienie klasy z określonym plikiem, trybem dostępu i rozmiarem pliku.
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)
Parametry
- path
- String
Ścieżka względna lub bezwzględna dla pliku, który będzie hermetyzować to FileRecordSequence wystąpienie.
- access
- FileAccess
Prawidłowa FileAccess wartość, która kontroluje rodzaj dostępu użytkowników, musi mieć plik dziennika.
- size
- Int32
Rozmiar pliku dziennika do otwarcia.
Wyjątki
Jeden lub więcej parametrów jest poza prawidłowym zakresem.
Plik określony przez path
jest nieprawidłowy.
Nie można odnaleźć pliku określonego przez path
program .
Nie można wykonać żądania z powodu nieoczekiwanego wyjątku we/wy.
Za mało pamięci, aby kontynuować wykonywanie programu.
Dostęp do określonego magazynu dzienników jest odrzucany przez system operacyjny.