我花了一段时间才在我的代码中找到这个错误。尝试创建一个临时测试目录:
Path.Combine("C:", "test");
Directory.CreateDirectory(path);
所以这不会创建目录C:\test
。似乎只是在执行程序集的本地文件夹中创建目录 test
。
这是因为 Path.Combine("C:", "test");
返回 C:test
,而不是 C:\test
.
我并不假装对文件系统了解太多,所以可能原因很明显,但我不明白。我不确定他们为什么以这种方式实现 Path
,或者为什么 CreateDirectory
不提示目录名称无效。
最佳答案
好吧,您正在组合一个驱动器号和一个名称。在 Windows 下,这意味着“该驱动器当前目录下的名称”。例如:
C:\> cd foo
c:\foo> d:
d:\> mkdir c:bar
这将创建 c:\foo\bar
。因此,对我来说,它似乎与 Windows 的设计一致(回到 MS-DOS)——这不一定是 Windows 的明智设计,但 .NET 与其保持一致是有意义的。
关于c# - 为什么System.IO是这样实现的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7916012/