פיצול קבצי MBOX

פצל אחסון MBOX/בטל את פעולת הפיצול

Aspose.Email מספקת שיטות לחלוקת קבצי תיבת דואר גדולים לחלקים ניתנים לניהול. זה מסייע לשפר ביצועים ויעילות בזיכרון, בייחוד בעבודה עם ארכיוני אימייל נרחבים. אפשרויות הפיצול הזמינות משתנות בהתאם לגרסת .NET שבה אתה משתמש.

API נתמכים לפי גרסת .NET

ל-.NET Framework 4.5 ול-.NET Core

ניתן לחלק נתוני MBOX באמצעות SplitInto שיטה של MboxStorageReader מחלקה, עם האפשרות לכלול אסימון ביטול או לעגן את שם קובץ הפלט:

פרמטרים:

  • chunkSize: הגודל המשוער של כל חלק בבייטים.
  • outputPath: נתיב התיקייה שבה ייווצרו החלקים.
  • partFileNamePrefix: הקידומת שתתווסף לשם הקובץ של כל חלק.
  • token: CancellationToken המאפשר ביטול אפשרי של הפעולה.

לגרסאות .NET מתחת ל‑4.5

גרסאות קודמות תומכות באותו SplitInto שיטה אך ללא אסימוני ביטול:

דוגמאות קוד לפיצול מבוקר עם ביטול

דוגמאות הקוד שלהלן מדגימות כיצד לפצל ארכיון עד ל-5 חלקים, ולבטל את הפעולה באופן אוטומטי לאחר מכן:

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

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

פיצול קבצי MBOX גדולים באופן אסינכרוני

עבודה עם ארכיוני אימייל גדולים יכולה להיות לא יעילה ולדרוש הרבה זיכרון. כדי לשפר ביצועים וניהול, Aspose.Email עבור .NET מספקת את ה‑asynchronous SplitIntoAsync שיטה המאפשרת לפצל קבצים גדולים לחלקים קטנים יותר - ללא חסימת תלת הראשי. דוגמת הקוד שלהלן מראה כיצד להשתמש ב MboxStorageReader.CreateReaderAsync כדי לפתוח קובץ MBOX גדול באופן אסינכרוני ולאחר מכן לקרוא ל SplitIntoAsync כדי לחלק אותו לקבצים קטנים יותר, כל אחד בגודל מרבי של 10 MB. החלקים המתקבלים נשמרים בתיקיית הפלט שצוינה עם הקידומת "chunk_".

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