c# - 为什么System.IO是这样实现的

标签 c# path directory filepath .net

我花了一段时间才在我的代码中找到这个错误。尝试创建一个临时测试目录:

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/

相关文章:

c# - 我可以将 DbSet 和 BindingList 绑定(bind)在一起以在 ListBox 中显示数据库内容吗?

html - 如何在 Angular2 中提供图像?

build - Launch4j/windres : how to set paths correctly?

javascript - Gruntfile.js 中的 {,*/}*.* 是什么意思

python - Nuitka 编译具有包含所需文件的子目录的 python 项目

python - 文件名中当前年份和月份的模式匹配

c# - XAML 绑定(bind)到属性

c# - 我如何让连续的两个随机数给出不同的值?

c# - SQL SMO 执行批处理 TSQL 脚本

python - 从目录树中获取任意文件