Division de fichiers MBOX
Diviser le stockage MBOX/Annuler l’opération de division
Aspose.Email fournit des méthodes pour diviser les grands fichiers de boîte aux lettres en morceaux gérables. Cela aide à améliorer les performances et l’efficacité mémoire, surtout lorsqu’on travaille avec d’importantes archives de courriels. Les options de division disponibles varient selon la version .NET que vous utilisez.
API prises en charge par version .NET
Pour .NET Framework 4.5 et .NET Core
Vous pouvez segmenter les données MBOX en utilisant le SplitInto méthode du MboxStorageReader classe, avec l’option d’inclure un jeton d’annulation ou de personnaliser le nom du fichier de sortie :
-
SplitInto(long chunkSize, string outputPath, CancellationToken token)
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix, CancellationToken token)
Paramètres :
- chunkSize : La taille approximative de chaque fragment en octets.
- outputPath : Le chemin du dossier où les fragments seront créés.
- partFileNamePrefix : Le préfixe à ajouter au nom de fichier de chaque partie.
- token : Un CancellationToken qui permet l’annulation éventuelle de l’opération.
Pour les versions .NET inférieures à 4.5
Les versions antérieures prennent en charge le même SplitInto méthode mais sans jetons d’annulation :
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix)
-
Cancel() - Utilisé pour interrompre le processus de division à mi‑parcours.
Exemples de code pour le fractionnement contrôlé avec annulation
Les extraits de code suivants montrent comment diviser une archive en jusqu’à 5 parties, en annulant automatiquement l’opération par la suite :
.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();
Inférieur à .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();
};
Diviser les gros fichiers MBOX de façon asynchrone
Travailler avec de grandes archives de courriels peut être inefficace et gourmand en mémoire. Pour améliorer les performances et la maniabilité, Aspose.Email pour .NET fournit l’asynchrone SplitIntoAsync méthode, qui vous permet de diviser de gros fichiers en morceaux plus petits - sans bloquer le thread principal. L’exemple de code ci‑dessous montre comment utiliser MboxStorageReader.CreateReaderAsync pour ouvrir un grand fichier MBOX de façon asynchrone puis appeler SplitIntoAsync pour le diviser en fichiers plus petits, chacun d’une taille maximale de 10 Mo. Les morceaux résultants sont enregistrés dans le répertoire de sortie spécifié en utilisant le préfixe "chunk_".
using (var reader = await MboxStorageReader.CreateReaderAsync("input.mbox", new MboxLoadOptions()))
{
await reader.SplitIntoAsync(10 * 1024 * 1024, "outputDirectory", "chunk_", CancellationToken.None);
}