FileRecordSequence Конструкторы
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Инициализирует новый экземпляр класса FileRecordSequence.
Перегрузки
FileRecordSequence(String) |
Инициализирует новый экземпляр класса FileRecordSequence с указанным файлом. |
FileRecordSequence(String, FileAccess) |
Инициализирует новый экземпляр класса FileRecordSequence с указанным файлом и режимом доступа. |
FileRecordSequence(String, FileAccess, Int32) |
Инициализирует новый экземпляр класса FileRecordSequence с указанным файлом, режимом доступа и размером файла. |
FileRecordSequence(String)
Инициализирует новый экземпляр класса FileRecordSequence с указанным файлом.
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)
Параметры
- path
- String
Абсолютный или относительный путь к файлу, который инкапсулируется экземпляром FileRecordSequence.
Исключения
Файл, заданный параметром path
, является недопустимым.
Не удается найти файл, заданный параметром path
.
Выполнить запрос невозможно из-за непредвиденного исключения ввода-вывода.
Недостаточно памяти, чтобы продолжить выполнение программы.
Доступ к заданному хранилищу журнала запрещен операционной системой.
Примеры
Следующий пример создает последовательность записей, добавляет к ней запись, считывает записи и, наконец, удаляет последовательность.
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
Комментарии
Этот конструктор создает доступ для чтения и записи к файлу и открывает файл с общим доступом для чтения. Это означает, что не удастся выполнить запросы на открытие файла для записи этим или другим процессом, пока не будет удален экземпляр FileRecordSequence, но чтение будет происходить. Если параметр path
не найден, новый файл создается с нулевым размером.
Применяется к
FileRecordSequence(String, FileAccess)
Инициализирует новый экземпляр класса FileRecordSequence с указанным файлом и режимом доступа.
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)
Параметры
- path
- String
Абсолютный или относительный путь к файлу, который инкапсулируется экземпляром FileRecordSequence.
- access
- FileAccess
Допустимое значение FileAccess, определяющее тип доступа пользователей к файлу журнала.
Исключения
Файл, заданный параметром path
, является недопустимым.
Не удается найти файл, заданный параметром path
.
Выполнить запрос невозможно из-за непредвиденного исключения ввода-вывода.
Недостаточно памяти, чтобы продолжить выполнение программы.
Доступ к заданному хранилищу журнала запрещен операционной системой.
Применяется к
FileRecordSequence(String, FileAccess, Int32)
Инициализирует новый экземпляр класса FileRecordSequence с указанным файлом, режимом доступа и размером файла.
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)
Параметры
- path
- String
Абсолютный или относительный путь к файлу, который инкапсулируется экземпляром FileRecordSequence.
- access
- FileAccess
Допустимое значение FileAccess, определяющее тип доступа пользователей к файлу журнала.
- size
- Int32
Размер файла журнала, который необходимо открыть.
Исключения
Один или несколько параметров выходят за пределы допустимого диапазона.
Файл, заданный параметром path
, является недопустимым.
Не удается найти файл, заданный параметром path
.
Выполнить запрос невозможно из-за непредвиденного исключения ввода-вывода.
Недостаточно памяти, чтобы продолжить выполнение программы.
Доступ к заданному хранилищу журнала запрещен операционной системой.