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,
FolderHierarchynení 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);
}
}