Navigace v OLM složkách

OLM soubor organizuje svá data do stromu složek, z nichž každá je reprezentována OlmFolder objekt. Tento článek ukazuje, jak procházet hierarchii složek, získat konkrétní složku podle názvu, navigovat pod‑složky a číst cesty složek.

Získat hierarchii složek

Jakmile je soubor otevřen, přistupujte k jeho adresářové struktuře přes FolderHierarchy vlastnosti. Tato vlastnost vrací seznam OlmFolder objekty, z nichž každý představuje adresář nejvyšší úrovně v OLM souboru. Pro hlubší průzkum čtěte SubFolders vlastnost každé složky, která vrací její podadresáře. Pomocí těchto dvou členů můžete projít celou hierarchii.

Níže uvedený příklad vytiskne všechny složky v hierarchickém pořadí:

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 a metoda FromFile

Způsob, jakým soubor otevřete, ovlivňuje jak FolderHierarchy se chová:

  • Když otevřete soubor pomocí konstruktoru, FolderHierarchy vlastnost se inicializuje automaticky.
  • Když otevřete soubor pomocí FromFile metoda, FolderHierarchy není standardně inicializována a vrací null. V tomto případě zavolejte GetFolders metodu explicitně k inicializaci hierarchie a získání seznamu adresářů:
using (var olm = OlmStorage.FromFile(fileName))
{
    var folders = olm.GetFolders();
}

Získat složku podle názvu

Pro získání jedné složky podle názvu zavolejte GetFolder metoda. Předávejte název složky jako první argument a boolean jako druhý argument, který určuje, zda má být při hledání rozlišení velikosti písmen ignorováno.

using (var olm = OlmStorage.FromFile(fileName))
{
    // get the Inbox folder by name, ignoring case
    OlmFolder folder = olm.GetFolder("Inbox", true);
}

Získat pod‑složku podle názvu

Každý OlmFolder také vám umožní najít podřízenou složku přímo pomocí GetSubFolder metody. Předávejte název pod‑složky a zda má být rozdíl mezi velkými a malými písmeny ignorován. To je užitečné, když již máte nadřazenou složku a chcete pokračovat bez opětovného skenování celé hierarchie.

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}");
    }
}

Získat cesty složek

Úplnou cestu ke složce můžete získat pomocí OlmFolder.Path vlastnost. Následující úryvek vytiskne cestu každé složky v souboru:

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);
    }
}