Rozdělení souborů MBOX
Rozdělit úložiště MBOX/Zrušit operaci rozdělení
Aspose.Email poskytuje metody pro rozdělení velkých souborů poštovní schránky na zvládnutelné části. To pomáhá zlepšit výkon a efektivitu paměti, zejména při práci s rozsáhlými e‑mailovými archivy. Dostupné možnosti rozdělení se liší podle verze .NET, kterou používáte.
Podporovaná API podle verze .NET
Pro .NET Framework 4.5 a .NET Core
MBOX data můžete segmentovat pomocí SplitInto metoda třídy MboxStorageReader třída, s možností zahrnout token pro zrušení nebo přizpůsobit pojmenování výstupních souborů:
-
SplitInto(long chunkSize, string outputPath, CancellationToken token)
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix, CancellationToken token)
Parametry:
- chunkSize: Přibližná velikost každé části v bajtech.
- outputPath: Cesta ke složce, kde budou vytvořeny části.
- partFileNamePrefix: Předpona, která bude přidána k názvu souboru každé části.
- token: CancellationToken, který umožňuje případné zrušení operace.
Pro verze .NET nižší než 4.5
Starší verze podporují stejné SplitInto metoda, ale bez tokenů pro zrušení:
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix)
-
Cancel() – Používá se k přerušení procesu rozdělení v polovině.
Ukázky kódu pro řízené rozdělení s rušením
Následující ukázky kódu demonstrují, jak rozdělit archiv na až 5 částí, přičemž po dokončení se operace automaticky zruší:
.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();
Pod .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();
};
Asynchronní rozdělení velkých souborů MBOX
Práce s velkými e‑mailovými archivy může být neefektivní a náročná na paměť. Pro zlepšení výkonu a spravovatelnosti Aspose.Email pro .NET poskytuje asynchronní SplitIntoAsync metoda, která umožňuje rozdělit velké soubory na menší části – bez blokování hlavního vlákna. Níže uvedený příklad kódu ukazuje, jak použít MboxStorageReader.CreateReaderAsync otevřít velký MBOX soubor asynchronně a poté zavolat SplitIntoAsync k rozdělení do menších souborů, každý s maximální velikostí 10 MB. Výsledné části jsou uloženy do zadaného výstupního adresáře s předponou "chunk_".
using (var reader = await MboxStorageReader.CreateReaderAsync("input.mbox", new MboxLoadOptions()))
{
await reader.SplitIntoAsync(10 * 1024 * 1024, "outputDirectory", "chunk_", CancellationToken.None);
}