我最近碰到了Microsoft的一个奇怪功能:
假设我们的文件夹c:\tmp123
包含3个文件-1.txt
2.txtx
3.txtxt
a)调用Directory.GetFiles(@"C:\tmp123", "*.txt")
会在3个返回的项中产生。
b)调用Directory.GetFiles(@"C:\tmp123", "*.txtx")
会在1个返回的项目中产生。
根据Microsoft的介绍,这是预期的行为(请参阅MSDN中的Note)。
我的问题是:
即我如何有一个仅返回
*.txt
扩展名而不返回*.txtx
,*.txtstarngefunctionality
等的搜索模式? 最佳答案
这样做的原因是向后兼容。
Windows最初是作为MSDOS之上的图形界面构建的,该文件的名称只有8个字符,扩展名最多3个字符。 MSDOS文件系统的扩展允许Windows使用更长的文件名和扩展名,但在MSDOS中它们仍将显示为8.3文件名。
由于Windows上的命令提示符是MSDOS中旧命令解释器的演变,这意味着保留了一些“过时的”行为(例如3个字母的搜索模式),因此在“旧时代”或“旧计时器”中构建的应用程序和脚本不会破裂。
(另一个示例是大多数Windows文件系统都不区分大小写的事实,是的,您猜到了,因为MSDOS没有 shell )