You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DirectoryInfo.GetFiles通配符在C、D盘表现异常问题求助

问题排查与解决方案

这是Windows文件系统8.3短命名规则与.NET文件搜索逻辑的兼容性问题——你禁用C盘8.3命名后,已存在文件的短文件名不会自动清除,这是问题未解决的核心原因。

排查与修复步骤

  • 确认文件的8.3短名:打开命令提示符,进入目标文件夹,执行dir /x命令。你会发现.xlsx文件的短名称格式为XXX~1.XLS,这正是*.xls通配符搜索会匹配到它的原因。
  • 清除现有文件的短名:对每个.xlsx文件执行命令 fsutil file setshortname "目标文件.xlsx" "",手动清空其8.3短文件名。
  • 验证修复效果:重新调用DirectoryInfo.GetFiles("*.xls"),此时应仅返回真正的.xls格式文件。

彻底规避方案

如果不想依赖文件系统的短名规则,建议改用精确的扩展名过滤替代通配符搜索,示例代码如下:

var targetDir = new DirectoryInfo(@"C:\你的目标文件夹路径");
var xlsOnlyFiles = targetDir.GetFiles()
                            .Where(file => file.Extension.Equals(".xls", StringComparison.OrdinalIgnoreCase))
                            .ToList();

该方式直接对比文件扩展名,完全不受8.3命名规则影响。

内容的提问来源于stack exchange,提问作者Priyanka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 00:20:57