Chia tách các tệp MBOX

Chia lưu trữ MBOX/Hủy thao tác chia

Aspose.Email cung cấp các phương thức để chia các tệp hộp thư lớn thành các phần có thể quản lý được. Điều này giúp cải thiện hiệu suất và hiệu quả bộ nhớ, đặc biệt khi làm việc với các lưu trữ email lớn. Các tùy chọn chia sẵn có thay đổi tùy theo phiên bản .NET bạn đang sử dụng.

Các API được hỗ trợ theo phiên bản .NET

Đối với .NET Framework 4.5 và .NET Core

Bạn có thể chia đoạn dữ liệu MBOX bằng cách sử dụng SplitInto phương thức của MboxStorageReader lớp, với tùy chọn bao gồm token hủy hoặc tùy chỉnh tên tệp đầu ra:

Tham số:

  • chunkSize: Kích thước xấp xỉ của mỗi phần tính bằng byte.
  • outputPath: Đường dẫn thư mục nơi các phần sẽ được tạo.
  • partFileNamePrefix: Tiền tố sẽ được thêm vào tên tệp của mỗi phần.
  • token: Một CancellationToken cho phép hủy bỏ thao tác nếu cần.

Đối với các phiên bản .NET dưới 4.5

Các phiên bản trước hỗ trợ cùng SplitInto phương thức nhưng không có token hủy:

Mã mẫu cho việc chia có kiểm soát với hủy

Các mẫu mã sau đây minh họa cách chia một kho lưu trữ thành tối đa 5 phần, tự động hủy thao tác sau đó:

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

Dưới .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();
};

Chia tách các tệp MBOX lớn một cách bất đồng bộ

Làm việc với các lưu trữ email lớn có thể không hiệu quả và tiêu tốn nhiều bộ nhớ. Để cải thiện hiệu suất và khả năng quản lý, Aspose.Email cho .NET cung cấp khả năng bất đồng bộ SplitIntoAsync phương thức, cho phép bạn chia các tệp lớn thành các phần nhỏ hơn - mà không làm chặn luồng chính. Đoạn mã mẫu dưới đây cho thấy cách sử dụng MboxStorageReader.CreateReaderAsync để mở một tệp MBOX lớn một cách bất đồng bộ và sau đó gọi SplitIntoAsync để chia nó thành các tệp nhỏ hơn, mỗi tệp tối đa 10 MB. Các phần kết quả được lưu vào thư mục đầu ra đã chỉ định với tiền tố "chunk_".

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