我刚刚在我的应用程序中发现了一个非常奇怪的事情。我有一段代码,用于检查文件夹或任何子文件夹是否包含.xls
个文件而不是.xlsx
。这是因为我使用EPPlus
无法处理.xls
个文件。在运行Windows 10 Home
的计算机上,以下代码仅返回.xls
个文件,但不返回任何.xlsx
个文件。我现在尝试在Windows 10 Pro
计算机上运行相同的代码,代码也会获取.xlsx
个文件。我知道我只能使用.xls
获取Linq
个文件,但我仍然想知道为什么会发生这种情况。
var filePaths = Directory.GetFiles("C:\\xmlfiles", "*.xls", SearchOption.AllDirectories).ToList();
if (filePaths.Count > 0)
{
var files = string.Join(",", filePaths);
throw new Exception($"Folder contains .xls files which EPPlus can't handle. Please convert them first. Files: {files}");
}
答案 0 :(得分:3)
来自MSDN
在searchPattern(例如“* .txt”)中使用星号通配符时,指定扩展名中的字符数会影响搜索,如下所示:
使用问号通配符时,此方法仅返回与指定文件扩展名匹配的文件。例如,给定两个文件“file1.txt”和“file1.txtother”,在目录中,“file?.txt”的搜索模式只返回第一个文件,而搜索模式为“file * .txt”。返回两个文件。
以上是MSDN所说的正常行为。
但是根据您的问题,它可能会导致文件名约定为8.3 filename。禁用它,看看你是否得到了预期的结果。
fsutil behavior set disable8dot3
另请查看此question