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:
-
SplitInto(long chunkSize, string outputPath, CancellationToken token)
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix, CancellationToken token)
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:
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix)
-
Cancel() - Usato per interrompere il processo di divisione a metà.
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);
}