Экспорт списка древовидной структуры в текстовый файл в c#

У меня есть древовидное представление, и я хочу экспортировать родительские узлы древовидного представления, дочерние элементы в файл .txt. но когда я экспортирую файл .txt, формат выглядит очень плохо. Я нашел эту тему, но она мне не помогла. Есть другой способ?

Сохранение содержимого древовидной структуры в файл и загрузка позже

Я хочу, чтобы это понравилось в файле .txt

  1. Основная папка
    • Подпапка
      • .docx или .zip файл
      • .docx или .zip файл 2
    • Подпапка 2
      • .txt файл

но в моем .txt файле вот так.

ÿÿÿÿ WSystem.Windows.Forms, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089 ›System.Collections.Generic.List`1 [[System.Windows.Forms.TreeNode, System.Windows.Forms, Version = 4.0. 0.0, культура = нейтральный, PublicKeyToken = b77a5c561934e089]] _items_size_version System.Windows.Forms.TreeNode [] System.Windows.Forms.TreeNode
System.Windows.Forms.TreeNode TextToolTipTextName IsChecked ImageIndexImageKeySelectedImageIndexSelectedImageKey Ребенок Кол-во детей0 детей1 детей2 детей3 детей4 детей5 детей6 детей7 детей8 детей9 дети10 дети11 дети12 дети13 дети14 дети15 дети16 дети17 дети18 дети19 дети20 children21UserData System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System .Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System. Windows.Forms.TreeNode + ASP .NET MVC YazÄ ± lÄ ± mcÄ ± larÄ ± n YükseliÅŸi

IC: \ Users \ asd \ Desktop \ ASP .NET MVC YazÄ ± lÄ ± mcÄ ± larÄ ± n YükseliÅŸi System.Windows.Forms.TreeNode TextToolTipTextName IsChecked ImageIndexImageKeySelectedImageIndexSelectedImageKey ChildCount children0 children1 children2 children3 children4UserData System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode System.Windows.Forms.TreeNode 1-ASP.NET MVC GiriÅŸ! "# $% ^ C: \ Users \ asd \ Desktop \ ASP .NET MVC

это мой код

public static void SaveTree(TreeView tree, string filename)
    {
        using (Stream file = File.Open(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\myFile.txt.", FileMode.Create))
        {
            BinaryFormatter bf = new BinaryFormatter();
            bf.Serialize(file, tree.Nodes.Cast<TreeNode>().ToList());
        }
    }
1
0
1 277
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы написать представление в виде дерева в текстовом файле, вы можете выполнить следующий код

    private void button1_Click(object sender, EventArgs e)
    {
        btnCreateTreeData();
    }

    private void btnCreateTreeData()
    {
        // create buffer for storing string data
        System.Text.StringBuilder buffer = new System.Text.StringBuilder();
        // loop through each of the treeview's root nodes
        foreach (TreeNode rootNode in treeView1.Nodes)
            // call recursive function
            BuildTreeString(rootNode,buffer);
        // write data to file
        System.IO.File.WriteAllText(@"D:\treeTest.txt", buffer.ToString());
    }

    private void BuildTreeString(TreeNode rootNode,System.Text.StringBuilder buffer)
    {
        buffer.Append(rootNode.Text);
        buffer.Append(Environment.NewLine);
        foreach (TreeNode childNode in rootNode.Nodes)
            BuildTreeString(childNode,buffer);
    }

Tree View in FormTree View Saved in .txt File

зачем ссылаться на StringBuilder? это еще не ссылочный тип StringBuilder?

Mihir Dave 31.10.2018 13:06

Спасибо за вашу помощь. это работает для меня. Я добавляю эту строку для вашего кода. Есть короткий путь? foreach (TreeNode childNode в rootNode.Nodes) {if (childNode.Level == 1) {buffer.Append ("\ t"); } иначе, если (childNode.Level == 2) {buffer.Append ("\ t \ t"); }

Oğuz Özdemir 31.10.2018 13:42

Не смотрел коротким путем. Если в случае, если я встречу какой-либо метод, обновлю ответ. @ OğuzÖzdemir

SH7 31.10.2018 13:45

Другие вопросы по теме