System.IO.Directory.CreateDirectory - 有史以来最奇怪的异常

Posted

技术标签:

【中文标题】System.IO.Directory.CreateDirectory - 有史以来最奇怪的异常【英文标题】:System.IO.Directory.CreateDirectory - weirdest exception ever 【发布时间】:2021-11-09 00:18:33 【问题描述】:

所以,我正在尝试创建以下目录:

d:\temp\ak\ty\nul

路径在循环中构造,从:d:\temp等开始,一路创建不存在的目录,所以先创建:

d:\temp\ak

然后:

d:\temp\ak\ty

and.... 然后到最后一点 nul 它抛出这个异常:

那么,发生了什么事 - \.\nul 来自哪里?

代码:

string z_base_path = @"d:\temp\ak\ty";
string z_extra_path = "nul";
string z_full_path = System.IO.Path.Combine(z_base_path, z_extra_path);

System.IO.Directory.CreateDirectory(z_full_path);

【问题讨论】:

Naming Files, Paths, and Namespaces. 【参考方案1】:

在 Windows 中,nul 是保留文件名。没有文件或目录可以这样命名。其他保留名称包括:

con prn aux com0-9 lpt0-9

【讨论】:

【参考方案2】:

'nul' 是一个设备文件,这意味着没有文件/文件夹可以具有该名称。 而不是

string z_extra_path = "nul";

试试

string z_extra_path = "null";

string z_extra_path = "";
其他的是 con aux com1-9 lpt1-9 prn

【讨论】:

以上是关于System.IO.Directory.CreateDirectory - 有史以来最奇怪的异常的主要内容,如果未能解决你的问题,请参考以下文章