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ů:

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í:

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