Freigeben über


FileRegion Klasse

Definition

Stellt einen Bereich einer zu archivierenden Datei dar. Diese Klasse kann nicht vererbt werden.

public ref class FileRegion sealed
public sealed class FileRegion
type FileRegion = class
Public NotInheritable Class FileRegion
Vererbung
FileRegion

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie ein Protokollspeicher mithilfe der klassen und FileRegion der LogStore XML-Datei archiviert wird.

class LogBackup
{
    static void ArchiveToXML(LogStore logStore, string fileName)
    {

        LogArchiveSnapshot snapshot = logStore.CreateLogArchiveSnapshot();
        {
            XmlTextWriter writer = new XmlTextWriter(fileName, System.Text.Encoding.ASCII);
            writer.WriteStartElement("logArchive");

            foreach (FileRegion region in snapshot.ArchiveRegions)
            {
                writer.WriteStartElement("fileRegion");
                writer.WriteElementString("path",
                                          region.Path);
                writer.WriteElementString("length",
                                        region.FileLength.ToString());
                writer.WriteElementString("offset",
                                          region.Offset.ToString());

                using (Stream dataStream = region.GetStream())
                {
                    byte[] data = new byte[dataStream.Length];
                    dataStream.Read(data, 0, data.Length);

                    writer.WriteElementString("data", System.Convert.ToBase64String(data));
                }

                writer.WriteEndElement();
            }

            writer.Close();
            logStore.SetArchiveTail(snapshot.LastSequenceNumber);
        }
    }

    static void RestoreFromXML(string fileName)
    {
        using (XmlTextReader reader = new XmlTextReader(fileName))
        {
            reader.ReadStartElement("logArchive");
            while (reader.IsStartElement())
            {
                string path;
                long length;
                long offset;
                path = reader.ReadElementString("path");
                length = System.Int64.Parse(reader.ReadElementString("length"));
                offset = System.Int64.Parse(reader.ReadElementString("offset"));
                string dataString = reader.ReadElementString("data");
                byte[] data = System.Convert.FromBase64String(dataString);
                FileStream fileStream;
                using (fileStream = new FileStream(path,
                                              FileMode.OpenOrCreate,
                                              FileAccess.Write))
                {
                    fileStream.SetLength(length);
                    fileStream.Position = offset;
                    fileStream.Write(data, 0, data.Length);
                }
            }
            reader.ReadEndElement();
        }
    }
}
Friend Class LogBackup
    Private Shared Sub ArchiveToXML(ByVal logStore As LogStore, ByVal fileName As String)


        Dim snapshot As LogArchiveSnapshot = logStore.CreateLogArchiveSnapshot()
            Dim writer As New XmlTextWriter(fileName, System.Text.Encoding.ASCII)
            writer.WriteStartElement("logArchive")

        For Each region As FileRegion In snapshot.ArchiveRegions
            With writer
                .WriteStartElement("fileRegion")
                .WriteElementString("path", region.Path)
                .WriteElementString("length", region.FileLength.ToString())
                .WriteElementString("offset", region.Offset.ToString())
            End With

            Using dataStream As Stream = region.GetStream()
                Dim data(dataStream.Length - 1) As Byte
                dataStream.Read(data, 0, data.Length)

                writer.WriteElementString("data", System.Convert.ToBase64String(data))
            End Using

            writer.WriteEndElement()
        Next region

            writer.Close()
            logStore.SetArchiveTail(snapshot.LastSequenceNumber)
    End Sub

    Private Shared Sub RestoreFromXML(ByVal fileName As String)
        Using reader As New XmlTextReader(fileName)
            reader.ReadStartElement("logArchive")
            Do While reader.IsStartElement()
                Dim path As String
                Dim length As Long
                Dim offset As Long
                path = reader.ReadElementString("path")
                length = System.Int64.Parse(reader.ReadElementString("length"))
                offset = System.Int64.Parse(reader.ReadElementString("offset"))
                Dim dataString = reader.ReadElementString("data")
                Dim data() = System.Convert.FromBase64String(dataString)
                Dim fileStream As FileStream
                fileStream = New FileStream(path, FileMode.OpenOrCreate, FileAccess.Write)
                Using fileStream
                    fileStream.SetLength(length)
                    fileStream.Position = offset
                    fileStream.Write(data, 0, data.Length)
                End Using
            Loop
            reader.ReadEndElement()
        End Using
    End Sub
End Class

Hinweise

Ein LogArchiveSnapshot Objekt enthält die informationen, die zum Generieren einer konsistenten Sicherung der Daten in einem LogStore. Die tatsächlichen Daten sind in der aufzählbaren Auflistung von FileRegion Objekten enthalten, die von der ArchiveRegions Eigenschaft zurückgegeben werden. Jede FileRegion Instanz stellt eine Abfolge von Bytes in einer Datei dar, die archiviert werden muss.

Eigenschaften

Name Beschreibung
FileLength

Ruft die Länge der Datei in Bytes ab.

Offset

Ruft den Offset in die Datei ab, in der die Daten beginnen.

Path

Ruft den vollqualifizierten Speicherort der Datei ab, die diese Region enthält.

Methoden

Name Beschreibung
Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetStream()

Gibt einen Datenstrom zurück, der zum Lesen der zu archivierenden Daten verwendet werden kann.

GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für: