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:
-
SplitInto(long chunkSize, string outputPath, CancellationToken token)
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix, CancellationToken token)
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:
-
SplitInto(long chunkSize, string outputPath, string partFileNamePrefix)
-
Cancel() – używane do przerwania procesu podziału w połowie.
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);
}