gpt4 book ai didi

C# Directory.GetFiles 在不同的计算机上返回不同的结果

转载 作者:太空狗 更新时间:2023-10-30 01:30:43 29 4
gpt4 key购买 nike

我刚刚注意到我的应用程序中有一件非常奇怪的事情。我有一段代码检查文件夹或任何子文件夹是否包含 .xls 文件而不是 .xlsx。这是因为我使用的 EPPlus 无法处理 .xls 文件。在运行 Windows 10 家庭版 的计算机上,下面的代码仅返回 .xls 文件,但不返回任何 .xlsx 文件。我现在尝试在 Windows 10 Pro 机器上运行相同的代码,代码也提取了 .xlsx 文件。我知道我只能使用 Linq 获取 .xls 文件,但我仍然想知道为什么会发生这种情况。

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}");
}

最佳答案

来自 MSDN

当您在 searchPattern 中使用星号通配符(例如“*.txt”)时,指定扩展名中的字符数会影响搜索,如下所示:

  • 如果指定的扩展名正好是三个字符长,
    方法返回扩展名以指定
    开头的文件延期。例如,"*.xls" 返回 "book.xls"
    “book.xlsx”
  • 在所有其他情况下,该方法返回完全匹配的文件指定的扩展名。例如,“*.ai”返回“file.ai”但不是“file.aif”。

当您使用问号通配符时,此方法仅返回与指定文件扩展名匹配的文件。例如,给定目录中的两个文件“file1.txt”和“file1.txtother”,搜索模式“file?.txt”仅返回第一个文件,而搜索模式“file*.txt”返回两个文件。

如 MSDN 所述,以上是正常行为。

但是关于你的问题,它可能是由文件名约定引起的 8.3 filename .禁用它并查看是否得到预期的结果。

fsutil behavior set disable8dot3

也看看这个question

关于C# Directory.GetFiles 在不同的计算机上返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43581018/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com