Пример, есть путь: 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;
}
Но собрать от начала, до конца ветку мозги не доходят. Есть идеи?
Ну например так:
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);
И без рекурсии обошлось
Виртуальный выделенный сервер (VDS) становится отличным выбором
Стоит задача парсинга биржи криптовалют в n-потоковЯ сделал все на основе паттерна Singleton, чуть изменив его