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

C#:使用目录名通配符列出文件时遇非法字符异常,如何解决?

C# 实现目录名带通配符的文件搜索

你之前的代码报错,是因为Directory.GetFiles仅允许在路径的**最后一段(文件名部分)**使用通配符,路径中间的目录位置用*会被判定为非法字符。要实现目录名带通配的搜索,需要分两步处理:

  • 第一步:枚举目标父目录下的所有匹配子目录(比如C:\Users下的所有用户文件夹)
  • 第二步:遍历这些子目录,拼接目标文件路径并检查是否存在

基础实现代码

// 获取C:\Users下的所有用户目录
var userDirectories = Directory.GetDirectories(@"C:\Users");

List<string> foundFiles = new List<string>();
foreach (var userDir in userDirectories)
{
    // 拼接目标文件路径
    var targetFilePath = Path.Combine(userDir, @"Desktop\statistics.txt");
    // 检查文件是否存在
    if (File.Exists(targetFilePath))
    {
        foundFiles.Add(targetFilePath);
    }
}

LINQ简化写法

如果习惯用LINQ,可以用更简洁的链式调用:

var foundFiles = Directory.GetDirectories(@"C:\Users")
    .Select(userDir => Path.Combine(userDir, @"Desktop\statistics.txt"))
    .Where(File.Exists)
    .ToList();

进阶:过滤特定模式的用户目录

如果需要对用户目录名做匹配(比如只找以admin开头的用户文件夹),可以在枚举目录时指定搜索模式:

var userDirectories = Directory.EnumerateDirectories(@"C:\Users", "admin*");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:25:22