路径.GetDirectoryName在UNC路径上返回null

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

返回 null 和

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

返回 C:\

虽然这正是文档中提到的行为,但我想知道为什么。

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

返回null,而不是我所期望的\server.domain.tld\。是否有人知道为什么?


这条路径存在吗? - Anuraj
阴谋论1:API设计者怀有一个秘密愿望,即在未来的开发人员尝试使用相同的代码处理Windows和UNC路径时,给他们带来混乱和微妙的错误。 - user2864740
1个回答

2
通常,UNC路径结构为\\{server}\{share}\{path.....},因此您在UNC示例中的"Foo"等同于您第一个示例中的"C:\"。这就是为什么您的UNC示例路径为null的原因。 "\\server\foo\bar"的路径将为"bar"

1
这一定是处理UNC时最令人困惑/无助的API之一,特别是因为Path.GetDirectoryName(@"\\server\share\path")返回UNC服务器和共享("\server\share")..但是,请等待,“它们被确定为不是目录”! - user2864740
我同意...并且在2017年/fw 4.6.x中,这个bug仍然存在于IO库中! - Goodies

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接