当路径以"\ CON"结尾时,为什么IO.DirectoryInfo.FullName会中断?

Rus*_*ips 1 c# vb.net

我正在使用IO.DirectoryInfo来清理路径.但是,当路径以"\ CON"结尾时,它似乎表现出奇怪的行为.例如:

IO.DirectoryInfo("C:\FOOBAR\").FullName
Run Code Online (Sandbox Code Playgroud)

将返回:

C:\FOOBAR\
Run Code Online (Sandbox Code Playgroud)

但是,在这些例子中:

IO.DirectoryInfo("C:\CON").FullName
IO.DirectoryInfo("C:\SUB\CON").FullName
IO.DirectoryInfo("..\CON").FullName
IO.DirectoryInfo("CON").FullName
Run Code Online (Sandbox Code Playgroud)

返回值始终为:

\\.\CON
Run Code Online (Sandbox Code Playgroud)

因此,当用户想要创建一个名为"CON"的目录时,整个程序就会爆炸.

在我过去看过.Net Framework所做的所有奇怪的事情中,这都是需要的.谁能解释一下这里发生了什么?

Ale*_*lex 5

CON是保留的文件名,具有作为MS-DOS设备名称的长历史.正如有关命名文件,路径和命名空间的文档中所述:

不要使用以下保留名称作为文件名: CON,PRN,AUX,NUL,COM1,COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9,LPT1,LPT2,LPT3,LPT4,LPT5, LPT6,LPT7,LPT8和LPT9.还要避免使用这些名称,然后立即进行扩展; 例如,不建议使用NUL.txt.

请参阅https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx