我试图找到给定文件路径的所有可能的排列。在传输某些文件之前,这是在远程服务器上创建一些目录所必需的。
这是我的代码;
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 16
和PRTK 7.0.0
。
我不确定为什么会发生这种行为,并且感谢任何帮助。