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:
-
SplitInto(long chunkSize, string outputPath, CancellationToken token)
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix, CancellationToken token)
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:
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix)
-
Cancel() – Wird verwendet, um den Aufteilungsvorgang mitten im Prozess zu unterbrechen.
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);
}