Durch OLM‑Ordner navigieren
Eine OLM‑Datei organisiert ihre Daten in einem Baum von Ordnern, die jeweils durch ein OlmFolder Objekt darauf zu. Dieser Artikel zeigt, wie man die Ordnerhierarchie aufzählt, einen bestimmten Ordner nach Namen abruft, Unterordner navigiert und Ordnerpfade liest.
Ordnerhierarchie abrufen
Nachdem eine Datei geöffnet ist, greifen Sie über die FolderHierarchy Eigenschaft zu. Diese Eigenschaft gibt eine Liste von OlmFolder Objekte, von denen jedes ein Top‑Level‑Verzeichnis in der OLM‑Datei darstellt. Um tiefer zu gehen, lesen Sie die SubFolders Eigenschaft jedes Ordners, die seine Unterverzeichnisse zurückgibt. Mit diesen beiden Mitgliedern können Sie die gesamte Hierarchie durchlaufen.
Das nachstehende Beispiel druckt alle Ordner in hierarchischer Reihenfolge:
using (var olm = new OlmStorage(fileName))
{
PrintAllFolders(olm.FolderHierarchy, string.Empty);
}
private void PrintAllFolders(IEnumerable<OlmFolder> folderHierarchy, string indent)
{
foreach (var folder in folderHierarchy)
{
Console.WriteLine($"{indent}{folder.Name}");
PrintAllFolders(folder.SubFolders, indent + "-");
}
}
FolderHierarchy und die FromFile‑Methode
Die Art, wie Sie die Datei öffnen, beeinflusst, wie FolderHierarchy :
- Wenn Sie die Datei über den Konstruktor öffnen, verhält sich die FolderHierarchy Eigenschaft öffnen, wird sie automatisch initialisiert.
- Wenn Sie die Datei mit dem FromFile Methode,
FolderHierarchyist nicht standardmäßig initialisiert und gibtnull. In diesem Fall rufen Sie die GetFolders Methode explizit auf, um die Hierarchie zu initialisieren und die Verzeichnisliste abzurufen:
using (var olm = OlmStorage.FromFile(fileName))
{
var folders = olm.GetFolders();
}
Get a Folder by Name
Um einen einzelnen Ordner nach Namen abzurufen, rufen Sie die GetFolder Methode. Übergeben Sie den Ordnernamen als erstes Argument und ein Boolesches als zweites Argument, das angibt, ob die Groß‑/Kleinschreibung bei der Suche ignoriert werden soll.
using (var olm = OlmStorage.FromFile(fileName))
{
// get the Inbox folder by name, ignoring case
OlmFolder folder = olm.GetFolder("Inbox", true);
}
Einen Unterordner nach Namen erhalten
Jedes OlmFolder ermöglicht Ihnen außerdem, einen Unterordner direkt mit dem GetSubFolder Methode. Übergeben Sie den Unterordnernamen und ob die Groß‑/Kleinschreibung ignoriert werden soll. Das ist nützlich, wenn Sie bereits einen übergeordneten Ordner besitzen und ohne erneutes Durchsuchen der gesamten Hierarchie tiefer einsteigen möchten.
using (var olm = OlmStorage.FromFile(fileName))
{
OlmFolder inbox = olm.GetFolder("Inbox", true);
// get a sub-folder of Inbox by name
OlmFolder archive = inbox.GetSubFolder("Archive", true);
if (archive != null)
{
Console.WriteLine($"Found sub-folder: {archive.Name}");
}
}
Ordnerpfade abrufen
Sie können den vollständigen Pfad eines beliebigen Ordners über die OlmFolder.Path Eigenschaft. Der folgende Ausschnitt gibt den Pfad jedes Ordners in der Datei aus:
using (var storage = new OlmStorage("SampleOLM.olm"))
{
PrintPath(storage.FolderHierarchy);
}
public static void PrintPath(IEnumerable<OlmFolder> folders)
{
foreach (OlmFolder folder in folders)
{
// print the current folder path
Console.WriteLine(folder.Path);
PrintPath(folder.SubFolders);
}
}