создание ветки treeview из полного пути к файлу

149
22 января 2020, 12:40

Пример, есть путь: C:\Users\user\source\repos\test1\test.txt Как из него получить ветку дерева: c:-->Users-->user-->source......и т.д. Мне бы сам алгоритм, как это всё можно устроить. Я могу разбить путь в список:

void GetParent(DirectoryInfo inf, List<string> coll)
{
     coll.Add(inf.Parent.Name);
     if (inf.Parent.Name != selectedDisk)
     {
         GetParent(inf.Parent, coll);
     }
}

Я могу собрать обратную ветку, от имени файла, до корневой папки:

tree.Items.Add(GetParent(selectedDirInfo));
TreeViewItem GetParent(DirectoryInfo inf)
    {
        TreeViewItem t = new TreeViewItem();
        t.Header = inf.Name;
        if (inf.Parent.Name != selectedDisk)
        {
            t.Items.Add(GetParent(inf.Parent));
        }
        return t;
    }

Но собрать от начала, до конца ветку мозги не доходят. Есть идеи?

Answer 1

Ну например так:

FileInfo      file = new FileInfo("d1/d2/d3/f.test");
DirectoryInfo currentDir = file.Directory;  
TreeViewItem  currentItem = new TreeViewItem() { Header = file.Name };
TreeViewItem  parentItem = null;
while(currentDir != null)
{
    parentItem = new TreeViewItem(){ Header = currentDir.Name };
    parentItem.Items.Add(currentItem);
    currentItem = parentItem;
    currentDir = currentDir.Parent;
}
tree.Items.Add(parentItem);

И без рекурсии обошлось

READ ALSO
Проектирование класса

Проектирование класса

Стоит задача парсинга биржи криптовалют в n-потоковЯ сделал все на основе паттерна Singleton, чуть изменив его

114
Чтение из файла C#

Чтение из файла C#

Делал так:

128