Aufteilen von MBOX‑Dateien

MBOX-Speicher aufteilen/Aufteilung abbrechen

Aspose.Email stellt Methoden zum Teilen großer Postfach‑Dateien in handhabbare Abschnitte bereit. Dies verbessert die Leistung und Speichereffizienz, insbesondere beim Arbeiten mit umfangreichen E‑Mail‑Archiven. Die verfügbaren Aufteilungsoptionen variieren je nach verwendetem .NET‑Version.

Von .NET‑Version unterstützte APIs

Für .NET Framework 4.5 und .NET Core

Sie können MBOX‑Daten segmentieren mithilfe des SplitInto Methode des MboxStorageReader Klasse, mit der Möglichkeit, ein Cancellation‑Token einzuschließen oder die Benennung der Ausgabedatei anzupassen:

Parameter:

  • chunkSize: Die ungefähre Größe jedes Teils in Bytes.
  • outputPath: Der Ordnerpfad, in dem die Teile erstellt werden.
  • partFileNamePrefix: Das Präfix, das dem Dateinamen jedes Teils hinzugefügt wird.
  • token: Ein CancellationToken, das die mögliche Abbruch der Operation ermöglicht.

Für .NET‑Versionen unter 4.5

Frühere Versionen unterstützen das Gleiche SplitInto Methode, jedoch ohne Abbruch‑Tokens:

Code‑Beispiele für kontrolliertes Aufteilen mit Abbruch

Die folgenden Code‑Beispiele zeigen, wie ein Archiv in bis zu 5 Teile aufgeteilt wird, wobei der Vorgang anschließend automatisch abgebrochen wird:

.NET 4.5 / .NET Core

int partCount = 0;

var tokenSource = new CancellationTokenSource();

var mbox = new MboxrdStorageReader(fileName, new MboxLoadOptions { LeaveOpen = false });

// Subscribe to events
mbox.MboxFileCreated += (sender, e) =>
{
    partCount++;
    if (partCount >= 5)
        tokenSource.Cancel();
};

System.Threading.Tasks.Task task = mbox.SplitInto(10000000, outputPath, tokenSource.Token);
task.Wait();

Unter .NET 4.5

int partCount = 0;
var mbox = new MboxrdStorageReader(fileName, new MboxLoadOptions { LeaveOpen = false });
mbox.SplitInto(10000000, outputPath);

mbox.MboxFileCreated += (sender, e) =>
{
    partCount++;
    if (partCount >= 5)
        mbox.Cancel();
};

Große MBOX‑Dateien asynchron aufteilen

Der Umgang mit großen E‑Mail‑Archiven kann ineffizient und speicherintensiv sein. Um Leistung und Handhabbarkeit zu verbessern, bietet Aspose.Email für .NET die asynchrone SplitIntoAsync Methode, die es ermöglicht, große Dateien in kleinere Teile zu splitten – ohne den Haupt‑Thread zu blockieren. Das untenstehende Code‑Beispiel zeigt, wie man verwendet MboxStorageReader.CreateReaderAsync um eine große MBOX‑Datei asynchron zu öffnen und anschließend aufzurufen SplitIntoAsync um sie in kleinere Dateien zu teilen, jede mit einer maximalen Größe von 10 MB. Die entstehenden Teile werden im angegebenen Ausgabeverzeichnis mit dem Präfix „chunk_“ gespeichert.

using (var reader = await MboxStorageReader.CreateReaderAsync("input.mbox", new MboxLoadOptions()))
{
    await reader.SplitIntoAsync(10 * 1024 * 1024, "outputDirectory", "chunk_", CancellationToken.None);
}