打开 OLM 文件
Contents
[
Hide
]
Aspose.Email for .NET 使用 OlmStorage 类。本文展示如何从路径或流打开 OLM 文件,以及如何安全加载可能损坏的文件。
打开 OLM 文件
OLM 文件可通过两种方式打开:
- 使用构造函数;
- 使用静态
FromFile方法。
这两种方法之间的行为存在差异,会影响文件夹层级的初始化。参见 导航 OLM 文件夹 了解详情。
使用构造函数
要打开文件,调用 OlmStorage 类并将完整文件名作为参数传递。因为 OlmStorage 实现 IDisposable,将其包装在一个 using 语句,以便在完成后释放底层文件句柄。
var fileName = "MyStorage.olm";
using (var olm = new OlmStorage(fileName))
{
// work with the storage
}
使用静态 FromFile 方法
要打开文件,请使用静态 FromFile 方法并将完整文件名作为参数传递:
var fileName = "MyStorage.olm";
using (var olm = OlmStorage.FromFile(fileName))
{
// work with the storage
}
从流打开 OLM 文件
当 OLM 数据不是来自本地路径——例如,从数据库、网络资源或云存储获取时——您可以直接从 Stream。使用 OlmStorage(Stream) 构造函数或静态 FromStream 方法。
using (var stream = File.OpenRead("MyStorage.olm"))
using (var olm = new OlmStorage(stream))
{
// work with the storage
}
静态方法的工作方式相同:
using (var stream = File.OpenRead("MyStorage.olm"))
using (var olm = OlmStorage.FromStream(stream))
{
// work with the storage
}
在访问存储期间保持源流打开。若在读取完文件夹和消息之前处置流,将导致读取错误。
打开损坏的 OLM 文件
如果文件可能部分损坏,仍可在不在首次错误时停止的情况下尽可能提取数据。为此,请创建 OlmStorage 实例加载文件,使用 OlmStorage(TraversalExceptionsCallback callback) 构造函数,然后使用 Load 方法而不是 FromFile.
回调接收加载和遍历期间抛出的异常,您可以记录或忽略它们。该 Load 方法返回 true 如果文件成功加载且可以遍历,则 false 若文件损坏严重以至无法遍历。
using (var olm = new OlmStorage((exception, id) =>
{
// Exception handling code.
Console.WriteLine($"Failed to process item '{id}': {exception.Message}");
}))
{
if (olm.Load(fileName))
{
// The file was loaded and can be traversed.
var folderHierarchy = olm.GetFolders();
}
else
{
Console.WriteLine("The OLM file is corrupted and cannot be traversed.");
}
}
有关从损坏文件提取项目的完整示例,请参见 读取和提取 OLM 消息.