Podział plików MBOX

Podziel przechowywanie MBOX/Anuluj operację dzielenia

Aspose.Email udostępnia metody podziału dużych plików skrzynek pocztowych na zarządzalne fragmenty. Pomaga to poprawić wydajność i efektywność pamięci, zwłaszcza przy pracy z rozbudowanymi archiwami e‑mail. Dostępne opcje podziału różnią się w zależności od wersji .NET, której używasz.

Obsługiwane API w zależności od wersji .NET

Dla .NET Framework 4.5 i .NET Core

Możesz segmentować dane MBOX przy użyciu SplitInto metoda MboxStorageReader klasa, z opcją dołączenia tokenu anulowania lub dostosowania nazw plików wyjściowych:

Parametry:

  • chunkSize: Przybliżony rozmiar każdej części w bajtach.
  • outputPath: Ścieżka folderu, w którym zostaną utworzone części.
  • partFileNamePrefix: Prefiks, który zostanie dodany do nazwy pliku każdej części.
  • token: CancellationToken, który umożliwia ewentualne anulowanie operacji.

Dla wersji .NET poniżej 4.5

Wcześniejsze wersje obsługują to samo SplitInto metoda, ale bez tokenów anulowania:

Przykłady kodu dla kontrolowanego podziału z anulowaniem

Poniższe przykłady kodu pokazują, jak podzielić archiwum na maksymalnie 5 części, automatycznie anulując operację po zakończeniu:

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

Poniżej .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();
};

Asynchroniczny podział dużych plików MBOX

Praca z dużymi archiwami e‑mail może być nieefektywna i obciążająca pamięć. Aby poprawić wydajność i zarządzanie, Aspose.Email dla .NET oferuje asynchroniczny SplitIntoAsync metoda, która umożliwia podzielenie dużych plików na mniejsze fragmenty – bez blokowania głównego wątku. Poniższy przykład kodu pokazuje, jak używać MboxStorageReader.CreateReaderAsync aby otworzyć duży plik MBOX asynchronicznie, a następnie wywołać SplitIntoAsync aby podzielić go na mniejsze pliki, każdy o maksymalnym rozmiarze 10 MB. Powstałe fragmenty są zapisywane w określonym katalogu wyjściowym z prefiksem „chunk_”.

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