我正在使用IO.DirectoryInfo来清理路径.但是,当路径以"\ CON"结尾时,它似乎表现出奇怪的行为.例如:
IO.DirectoryInfo("C:\FOOBAR\").FullName
将返回:
C:\FOOBAR\
但是,在这些例子中:
IO.DirectoryInfo("C:\CON").FullName
IO.DirectoryInfo("C:\SUB\CON").FullName
IO.DirectoryInfo("..\CON").FullName
IO.DirectoryInfo("CON").FullName
返回值始终为:
\\.\CON
因此,当用户想要创建一个名为"CON"的目录时,整个程序就会爆炸.
在我过去看过.Net Framework所做的所有奇怪的事情中,这都是需要的.谁能解释一下这里发生了什么?
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