将所有TreeView节点写入文本文件

时间:2015-06-11 09:45:37

标签: c# winforms treeview

我尝试将TreeNodes的所有Text="Group"TreeView保存到文件中。我可以使用TreeNodes打印所有Text="Group"但是当我添加StreamWriter加上文件名时,结果是一个空白文件。我确信有一个或多个TreeNodes名称是Group,因此无法解决问题。我该如何修复我的代码?

该文件的结果可能如下所示

  

第1组

     

第0组

编辑:

我在streamWriter.Close();方法的末尾找到了我添加CreateSiveFile的修补程序,现在它可以正常工作。

代码

    public void CreateSaveFile(string fileName ,TreeView treeView)
    {
        StreamWriter streamWriter = new StreamWriter(fileName);
        // Print each node recursively.
        TreeNodeCollection nodes = treeView.Nodes;
        foreach (TreeNode n in nodes)
        {
            WriteRecursive(streamWriter, n);
        }
    }

    public void WriteRecursive(StreamWriter writer, TreeNode treeNode)
    {
        if (treeNode.Text == "Group")
        {
            writer.WriteLine(String.Format("{0} {1}", treeNode.Text, treeNode.Nodes.Count));
            // Print each node recursively.
            foreach (TreeNode tn in treeNode.Nodes)
            {
                WriteRecursive(writer,tn);
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

恭喜发现问题!如果你不介意,我会指出一个有用的(和最佳实践)技术,你可以用在这样的事情上。

由于StreamWriter实现了IDisposable,因此最好使用using语句来实现它。实际上,对于任何实现IDisposable的内容,您应该使用using或明确调用.Dispose(),让CLR知道释放其资源。它不是只是最佳实践,但在这种情况下这样做会解决流不关闭的问题,因为当using语句关闭时,它会隐式调用{{1} },隐式调用streamWriter.Dispose()。 (为了便于阅读,如果您愿意,可以在那里显式调用streamWriter.Close()。)

这是推荐的方式,streamWriter.Close()

using