Divisione dei file MBOX

Dividi archivio MBOX/Annulla l’operazione di divisione

Aspose.Email fornisce metodi per dividere file di caselle di posta grandi in blocchi gestibili. Questo aiuta a migliorare le prestazioni e l’efficienza della memoria, soprattutto quando si lavora con ampi archivi email. Le opzioni di divisione disponibili variano a seconda della versione .NET in uso.

API supportate per versione .NET

Per .NET Framework 4.5 e .NET Core

È possibile segmentare i dati MBOX utilizzando il SplitInto metodo del MboxStorageReader classe, con l’opzione di includere un token di cancellazione o personalizzare la denominazione del file di output:

Parametri:

  • chunkSize: La dimensione approssimativa di ogni chunk in byte.
  • outputPath: Il percorso della cartella dove verranno creati i chunk.
  • partFileNamePrefix: Il prefisso da aggiungere al nome file di ogni parte.
  • token: Un CancellationToken che consente la possibile cancellazione dell’operazione.

Per versioni .NET inferiori a 4.5

Le versioni precedenti supportano lo stesso SplitInto metodo ma senza token di cancellazione:

Esempi di codice per divisione controllata con cancellazione

I seguenti esempi di codice dimostrano come dividere un archivio in fino a 5 parti, annullando automaticamente l’operazione in seguito:

.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();

Sotto .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();
};

Dividere i file MBOX grandi in modo asincrono

Lavorare con grandi archivi email può essere inefficiente e richiedere molta memoria. Per migliorare le prestazioni e la gestibilità, Aspose.Email per .NET fornisce la modalità asincrona SplitIntoAsync metodo, che consente di dividere file grandi in blocchi più piccoli - senza bloccare il thread principale. Il campione di codice seguente mostra come utilizzare MboxStorageReader.CreateReaderAsync per aprire un grande file MBOX in modo asincrono e poi chiamare SplitIntoAsync per dividerlo in file più piccoli, ognuno con dimensione massima di 10 MB. I blocchi risultanti vengono salvati nella directory di output specificata usando il prefisso "chunk_".

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