Navigazione delle cartelle OLM

Un file OLM organizza i dati in un albero di cartelle, ognuna rappresentata da un OlmFolder oggetto. Questo articolo mostra come enumerare la gerarchia delle cartelle, recuperare una cartella specifica per nome, navigare tra le sottocartelle e leggere i percorsi delle cartelle.

Recupera la Gerarchia delle Cartelle

Una volta aperto il file, accedi alla sua struttura di directory tramite il FolderHierarchy proprietà. Questa proprietà restituisce un elenco di OlmFolder oggetti, ognuno rappresentante una directory di livello superiore nel file OLM. Per esplorare più a fondo, leggi il SubFolders proprietà di ciascuna cartella, che restituisce le sue sottodirectory. Usando questi due membri puoi attraversare l’intera gerarchia.

L’esempio sotto stampa tutte le cartelle in ordine gerarchico:

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 e il Metodo FromFile

Il modo in cui apri il file influisce su come FolderHierarchy si comporta:

  • Quando apri il file con il costruttore, il FolderHierarchy la proprietà viene inizializzata automaticamente.
  • Quando apri il file con il FromFile metodo, FolderHierarchy non è inizializzato per impostazione predefinita e restituisce null. In questo caso, chiama il GetFolders metodo esplicitamente per inizializzare la gerarchia e recuperare l’elenco delle directory:
using (var olm = OlmStorage.FromFile(fileName))
{
    var folders = olm.GetFolders();
}

Ottieni una Cartella per Nome

Per recuperare una singola cartella per nome, chiama il GetFolder metodo. Passa il nome della cartella come primo argomento e un booleano come secondo argomento che indica se il caso deve essere ignorato durante la ricerca.

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

Ottieni una Sottocartella per Nome

Ogni OlmFolder ti permette anche di individuare direttamente una sottocartella con il GetSubFolder metodo. Passa il nome della sottocartella e se il caso deve essere ignorato. Questo è utile quando possiedi già una cartella genitore e vuoi approfondire senza riesaminare l’intera gerarchia.

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

Recupera Percorsi delle Cartelle

Puoi leggere il percorso completo di qualsiasi cartella tramite il OlmFolder.Path proprietà. Il frammento seguente stampa il percorso di ogni cartella nel file:

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