我尝试将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);
}
}
}
答案 0 :(得分:0)
恭喜发现问题!如果你不介意,我会指出一个有用的(和最佳实践)技术,你可以用在这样的事情上。
由于StreamWriter
实现了IDisposable
,因此最好使用using
语句来实现它。实际上,对于任何实现IDisposable
的内容,您应该使用using
或明确调用.Dispose()
,让CLR知道释放其资源。它不是只是最佳实践,但在这种情况下这样做会解决流不关闭的问题,因为当using
语句关闭时,它会隐式调用{{1} },隐式调用streamWriter.Dispose()
。 (为了便于阅读,如果您愿意,可以在那里显式调用streamWriter.Close()
。)
这是推荐的方式,streamWriter.Close()
:
using