我正在寻找一种时间有效的方法来将文件列表解析为树。可能有数亿个文件路径。
强力解决方案是在发生目录分隔符时拆分每个路径,并通过字符串比较遍历添加目录和文件条目的树,但这将非常慢。
输入数据通常按字母顺序排序,因此列表类似于:
C:\用户\亚伦\应用程序数据\ Amarok的\å文件
C:\用户\亚伦\应用程序数据\ Amarok的\ Afile2
C:\用户\亚伦\应用程序数据\ Amarok的\ Afile3
C:\用户\亚伦\应用程序数据\搅拌机\ alibrary.dll
C:\用户\亚伦\应用程序数据\搅拌机\ and_so_on.txt
从这个顺序来看,我的自然反应是将目录列表分成组...以某种方式......在进行慢速字符串比较之前。我真的不确定。我很感激任何想法。
编辑:如果可能的话,如果这棵树从上到下延迟加载会更好。
答案 0 :(得分:1)
您别无选择,只能进行完整的字符串比较,因为您无法保证字符串可能会有所不同。有一些技巧可能会加快一点:
matchingPrefix
例程来告诉你新的插入点在哪里。答案 1 :(得分:0)
如果可能,您可以使用tree
命令生成树结构,here
答案 2 :(得分:0)
要利用输入数据的“通常排序”属性,请在插入最后一个文件的目录中开始遍历:将当前路径名的目录名与前一个路径名进行比较。如果它们匹配,您只需插入此处,否则弹出一个级别并再试一次。