FileRecordSequence Oluşturucular
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
FileRecordSequence sınıfının yeni bir örneğini başlatır.
Aşırı Yüklemeler
FileRecordSequence(String) |
Belirtilen bir dosya ile sınıfının yeni bir örneğini FileRecordSequence başlatır. |
FileRecordSequence(String, FileAccess) |
Belirtilen dosya ve erişim moduyla sınıfının yeni bir örneğini FileRecordSequence başlatır. |
FileRecordSequence(String, FileAccess, Int32) |
Sınıfın FileRecordSequence yeni bir örneğini belirtilen dosya, erişim modu ve dosya boyutuyla başlatır. |
FileRecordSequence(String)
Belirtilen bir dosya ile sınıfının yeni bir örneğini FileRecordSequence başlatır.
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)
Parametreler
- path
- String
Bu FileRecordSequence örneğin kapsülleeceği dosya için göreli veya mutlak bir yol.
Özel durumlar
tarafından path
belirtilen dosya geçerli değil.
tarafından path
belirtilen dosya bulunamıyor.
Beklenmeyen bir G/Ç özel durumu nedeniyle istek gerçekleştirilemiyor.
Programın yürütülmesine devam etmek için yeterli bellek yok.
Belirtilen günlük deposuna erişim işletim sistemi tarafından reddedildi.
Örnekler
Aşağıdaki örnek bir kayıt dizisi oluşturur, buna kayıt ekler, kayıtları okur ve son olarak sırayı atmış olur.
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
Açıklamalar
Bu oluşturucu, dosyaya okuma/yazma erişimi oluşturur ve dosyayı okuma erişimi paylaşımıyla açar. Başka bir deyişle, bu veya başka bir işlem tarafından yazmak üzere dosyayı açma istekleri, bu FileRecordSequence örnek atılana kadar başarısız olur, ancak okuma girişimleri başarılı olur. Bulunamazsa path
, boyutu 0 bayt olan yeni bir dosya oluşturulur.
Şunlara uygulanır
FileRecordSequence(String, FileAccess)
Belirtilen dosya ve erişim moduyla sınıfının yeni bir örneğini FileRecordSequence başlatır.
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)
Parametreler
- path
- String
Bu FileRecordSequence örneğin kapsülleeceği dosya için göreli veya mutlak bir yol.
- access
- FileAccess
Kullanıcıların günlük dosyasına erişim türünü denetleen geçerli FileAccess bir değer.
Özel durumlar
tarafından path
belirtilen dosya geçerli değil.
tarafından path
belirtilen dosya bulunamıyor.
Beklenmeyen bir G/Ç özel durumu nedeniyle istek gerçekleştirilemiyor.
Programın yürütülmesine devam etmek için yeterli bellek yok.
Belirtilen günlük deposuna erişim işletim sistemi tarafından reddedildi.
Şunlara uygulanır
FileRecordSequence(String, FileAccess, Int32)
Sınıfın FileRecordSequence yeni bir örneğini belirtilen dosya, erişim modu ve dosya boyutuyla başlatır.
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)
Parametreler
- path
- String
Bu FileRecordSequence örneğin kapsülleeceği dosya için göreli veya mutlak bir yol.
- access
- FileAccess
Kullanıcıların günlük dosyasına erişim türünü denetleen geçerli FileAccess bir değer.
- size
- Int32
Açılacak günlük dosyasının boyutu.
Özel durumlar
Bir veya daha fazla parametre geçerli aralığın dışında.
tarafından path
belirtilen dosya geçerli değil.
tarafından path
belirtilen dosya bulunamıyor.
Beklenmeyen bir G/Ç özel durumu nedeniyle istek gerçekleştirilemiyor.
Programın yürütülmesine devam etmek için yeterli bellek yok.
Belirtilen günlük deposuna erişim işletim sistemi tarafından reddedildi.