我也编过一样的东西,我是这样实现的:
因为在Windows中不允许有空字符串的目录名,所以可以利用这个特性实现,先在所有节点下添加一个空字符串的子节点,然后扩展这个节点时先读取第一个节点,如果该节点名为空,则删除该节点,然后再读取相应的目录并添加子节点,如果不为空,则说明此节点已经被打开过,就不需要有任何操作了。实际效果很好。