查找所有可能的文件路径排列

时间:2016-05-05 20:59:51

标签: c#

我试图找到给定文件路径的所有可能的排列。在传输某些文件之前,这是在远程服务器上创建一些目录所必需的。

这是我的代码;

 public class PathUtils
{
    public bool IsUNC(String path)
    {
        string root = Path.GetPathRoot(path);
        return root.StartsWith(new String(Path.DirectorySeparatorChar, 2));
    }

    public void Combinations(HashSet<String> paths, String path)
    {
        if (!Path.HasExtension(path) && !path.EndsWith(Path.DirectorySeparatorChar.ToString()))
        {
            path = path + Path.DirectorySeparatorChar;
        }

        if (IsUNC(path))
        {
            paths.Add(new String(Path.DirectorySeparatorChar, 2) + (new Uri(path)).Host);
        }

        String previous = path;

        while (!String.IsNullOrEmpty(Path.GetDirectoryName(previous)))
        {
            paths.Add(Path.GetDirectoryName(previous));
            previous = Path.GetDirectoryName(previous);
        }

        paths.Add(Path.GetPathRoot(path));
    }
}

但是,当我给它path PRTK 7.0.0\KEYLOK 1.6时,HashSet中返回的唯一值是PRTK 7.0.0,当应该有两个PRTK 7.0.0和{ {1}}。如果我提供KEYLOK 1.6的路径,我会得到预期的结果,哈希集中的两个项目 - PRTK 7.0.0\KEYLOK 16PRTK 7.0.0

我不确定为什么会发生这种行为,并且感谢任何帮助。

0 个答案:

没有答案