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 :

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 :

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);
}