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,
FolderHierarchynon è inizializzato per impostazione predefinita e restituiscenull. 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);
}
}