Nawigacja po folderach OLM
Plik OLM organizuje dane w drzewo folderów, z których każdy jest reprezentowany przez OlmFolder obiekt. Ten artykuł pokazuje, jak wyliczyć hierarchię folderów, pobrać konkretny folder po nazwie, nawigować po podfolderach i odczytać ścieżki folderów.
Pobierz hierarchię folderów
Po otwarciu pliku uzyskaj dostęp do jego struktury katalogów poprzez FolderHierarchy właściwość. Ta właściwość zwraca listę OlmFolder obiekty, każdy reprezentujący katalog najwyższego poziomu w pliku OLM. Aby zagłębić się dalej, przeczytaj SubFolders właściwość każdego folderu, która zwraca jego podkatalogi. Korzystając z tych dwóch członków, możesz przejść całą hierarchię.
Poniższy przykład drukuje wszystkie foldery w kolejności hierarchicznej:
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 i metoda FromFile
Sposób otwarcia pliku wpływa na to, jak FolderHierarchy zachowuje się:
- Kiedy otwierasz plik przy użyciu konstruktora, FolderHierarchy właściwość jest inicjalizowana automatycznie.
- Kiedy otwierasz plik przy użyciu FromFile metoda,
FolderHierarchynie jest inicjalizowane domyślnie i zwracanull. W tym przypadku wywołaj GetFolders metodę wyraźnie, aby zainicjować hierarchię i pobrać listę katalogów:
using (var olm = OlmStorage.FromFile(fileName))
{
var folders = olm.GetFolders();
}
Pobierz folder po nazwie
Aby pobrać pojedynczy folder po nazwie, wywołaj GetFolder metodę. Przekaż nazwę folderu jako pierwszy argument oraz wartość boolowską jako drugi argument wskazującą, czy podczas wyszukiwania ma być ignorowana wielkość liter.
using (var olm = OlmStorage.FromFile(fileName))
{
// get the Inbox folder by name, ignoring case
OlmFolder folder = olm.GetFolder("Inbox", true);
}
Pobierz podfolder po nazwie
Każdy OlmFolder pozwala także bezpośrednio zlokalizować podfolder przy użyciu GetSubFolder metodę. Przekaż nazwę podfolderu i informację, czy ma być ignorowana wielkość liter. Jest to przydatne, gdy już posiadasz folder nadrzędny i chcesz zagłębić się dalej bez ponownego skanowania całej hierarchii.
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}");
}
}
Pobieranie ścieżek folderów
Pełną ścieżkę dowolnego folderu można odczytać poprzez OlmFolder.Path właściwość. Poniższy fragment drukuje ścieżkę każdego folderu w pliku:
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);
}
}