我刚刚偶然发现了一个没有记录的行为GetFiles
中的方法System.IO.Directory
.
每当searchPattern
传递给该方法的参数包含保留的 Windows 设备名称,例如"nul.*"
or "aux.bmp"
,该方法返回一个包含不存在文件名称的数组,例如C:\Users\ft1\nul
or D:\aux
, etc.
我想知道这些设备名称在上下文中是否有特殊含义,例如“。”或“..”,或者这只是一种错误。无论如何,这看起来还是很奇怪。
例如,C# 中的以下代码片段:
string[] fileNames = Directory.GetFiles(@"C:\D:\..\..\...\", "con.txt");
foreach (string fileName in fileNames) Console.WriteLine(fileName);
prints
C:\D:\..\..\...\con
有什么线索吗?
这是已知的。这是一个关于操作系统的设计命名文件、路径和命名空间 (Windows) http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
摘抄:
请勿使用以下保留名称作为文件名:
CON、PRN、AUX、NUL、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8 和 LPT9。还要避免这些名称后紧跟着扩展名;例如,不建议使用 NUL.txt。有关详细信息,请参阅命名空间。
这些基本上是文件名别名(命名空间),因此它们始终全局存在(在每个文件夹中)。如果您尝试枚举它们,您将得到它们,因为它们确实存在。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)