2014-10-06 162 views
3
Path.GetDirectoryName(@"C:\\"); 

返回null,Path.GetDirectoryName UNC路径

Path.GetDirectoryName(@"C:\\Foo"); 

回报C对返回null:\

虽然这恰恰是在documentation提到的问题我不知道为什么

Path.GetDirectoryName(@"\\server.domain.tld\Foo"); 

返回null,而不是我所期望的\ server.domain.tld \

有没有人有线索为什么?

+0

这是否路径存在? – Anuraj 2014-10-06 07:42:20

+0

阴谋理论#1:API设计人员怀着一种秘密的愿望,为未来的开发人员造成混淆和微妙的错误,试图使用相同的代码来处理Windows *和* UNC路径.. – user2864740 2018-01-29 04:20:02

回答

2

通常,UNC路径结构为\\{server}\{share}\{path.....},因此UNC示例中的"Foo"等同于第一个示例的"C:\"。这就是为什么你得到null你的UNC例子的路径。

"\\server\foo\bar"路径将是"bar"

+0

啊,我错过了;感谢澄清 – 2014-10-06 07:43:25

+0

这是尝试处理UNC最困惑/无用的API之一,尤其是因为'Path.GetDirectoryName(@“\\ server \ share \ path”)* *返回* UNC服务器和共享(“\\ server \ share”)..但是,等待“那些被建立为'不是目录'! – user2864740 2018-01-29 04:13:57