MBOX‑bestanden splitsen
MBOX-opslag splitsen/Het splitsen annuleren
Aspose.Email biedt methoden om grote mailboxbestanden in beheersbare delen te verdelen. Dit verbetert de prestaties en geheugenefficiëntie, vooral bij het werken met omvangrijke e‑mailarchieven. De beschikbare splitsingsopties variëren afhankelijk van de .NET‑versie die je gebruikt.
Ondersteunde API’s per .NET‑versie
Voor .NET Framework 4.5 en .NET Core
Je kunt MBOX‑data segmenteren met behulp van de SplitInto methode van de MboxStorageReader klasse, met de optie om een annulerings‑token op te nemen of de naamgeving van het uitvoerbestand aan te passen:
-
SplitInto(long chunkSize, string outputPath, CancellationToken token)
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix, CancellationToken token)
Parameters:
- chunkSize: De geschatte grootte van elk segment in bytes.
- outputPath: Het mappad waarin de segmenten worden aangemaakt.
- partFileNamePrefix: Het voorvoegsel dat aan de bestandsnaam van elk deel moet worden toegevoegd.
- token: Een CancellationToken die de mogelijke annulering van de bewerking mogelijk maakt.
Voor .NET‑versies onder 4.5
Eerdere versies ondersteunen hetzelfde SplitInto methode maar zonder annulerings‑tokens:
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix)
-
Cancel() - Wordt gebruikt om het splitsingsproces halverwege te onderbreken.
Code‑samples voor gecontroleerd splitsen met annulering
De volgende code‑samples demonstreren hoe een archief in maximaal 5 delen te splitsen, waarna de bewerking automatisch wordt geannuleerd:
.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();
Onder .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();
};
Grote MBOX‑bestanden asynchroon splitsen
Werken met grote e‑mailarchieven kan inefficiënt en geheugenzwaar zijn. Om de prestaties en beheerbaarheid te verbeteren, biedt Aspose.Email voor .NET de asynchrone SplitIntoAsync methode, waarmee je grote bestanden in kleinere delen kunt splitsen - zonder de hoofdthread te blokkeren. Het voorbeeldcode hieronder laat zien hoe je MboxStorageReader.CreateReaderAsync om een groot MBOX‑bestand asynchroon te openen en vervolgens aan te roepen SplitIntoAsync om het op te delen in kleinere bestanden, elk met een maximale grootte van 10 MB. De resulterende delen worden opgeslagen in de opgegeven uitvoermap met het voorvoegsel "chunk_".
using (var reader = await MboxStorageReader.CreateReaderAsync("input.mbox", new MboxLoadOptions()))
{
await reader.SplitIntoAsync(10 * 1024 * 1024, "outputDirectory", "chunk_", CancellationToken.None);
}