FileRecordSequence Constructeurs
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Initialise une nouvelle instance de la classe FileRecordSequence.
Surcharges
FileRecordSequence(String) |
Initialise une nouvelle instance de la classe FileRecordSequence avec un fichier spécifié. |
FileRecordSequence(String, FileAccess) |
Initialise une nouvelle instance de la classe FileRecordSequence avec un fichier spécifié et un mode d'accès. |
FileRecordSequence(String, FileAccess, Int32) |
Initialise une nouvelle instance de la classe FileRecordSequence avec un fichier spécifié, un mode d'accès et une taille de fichier. |
FileRecordSequence(String)
Initialise une nouvelle instance de la classe FileRecordSequence avec un fichier spécifié.
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)
Paramètres
- path
- String
Chemin d'accès relatif ou absolu pour le fichier que cette instance FileRecordSequence va encapsuler.
Exceptions
Le fichier spécifié par path
n'est pas valide.
Le fichier spécifié par path
est introuvable.
La requête ne peut pas être exécutée en raison d'une exception d'E/S inattendue.
La mémoire disponible n'est pas suffisante pour continuer l'exécution du programme.
L'accès pour le magasin de journaux spécifié est refusé par le système d'exploitation.
Exemples
L’exemple suivant crée une séquence d’enregistrements, y ajoute un enregistrement, lit les enregistrements et supprime finalement la séquence.
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
Remarques
Ce constructeur crée l'accès en lecture/écriture au fichier et ouvre le fichier avec l'accès en lecture partagé. Cela signifie que les demandes d'ouverture du fichier en écriture par ce processus ou un autre échoueront tant que cette instance FileRecordSequence ne sera pas éliminée, mais que les essais de lecture réussiront. Si path
est introuvable, un nouveau fichier est créé avec une taille de 0 octet.
S’applique à
FileRecordSequence(String, FileAccess)
Initialise une nouvelle instance de la classe FileRecordSequence avec un fichier spécifié et un mode d'accès.
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)
Paramètres
- path
- String
Chemin d'accès relatif ou absolu pour le fichier que cette instance FileRecordSequence va encapsuler.
- access
- FileAccess
Valeur FileAccess valide qui contrôle le type d'accès dont bénéficient les utilisateurs à un fichier journal.
Exceptions
Le fichier spécifié par path
n'est pas valide.
Le fichier spécifié par path
est introuvable.
La requête ne peut pas être exécutée en raison d'une exception d'E/S inattendue.
La mémoire disponible n'est pas suffisante pour continuer l'exécution du programme.
L'accès pour le magasin de journaux spécifié est refusé par le système d'exploitation.
S’applique à
FileRecordSequence(String, FileAccess, Int32)
Initialise une nouvelle instance de la classe FileRecordSequence avec un fichier spécifié, un mode d'accès et une taille de fichier.
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)
Paramètres
- path
- String
Chemin d'accès relatif ou absolu pour le fichier que cette instance FileRecordSequence va encapsuler.
- access
- FileAccess
Valeur FileAccess valide qui contrôle le type d'accès dont bénéficient les utilisateurs à un fichier journal.
- size
- Int32
Taille du fichier journal à ouvrir.
Exceptions
Un ou plusieurs des paramètres sont extérieurs à la plage valide.
Le fichier spécifié par path
n'est pas valide.
Le fichier spécifié par path
est introuvable.
La requête ne peut pas être exécutée en raison d'une exception d'E/S inattendue.
La mémoire disponible n'est pas suffisante pour continuer l'exécution du programme.
L'accès pour le magasin de journaux spécifié est refusé par le système d'exploitation.