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

如何在C#中按文件名或目录名查找指定JSON文件?

解决方案

你的问题出在搜索模式的匹配逻辑上:*Localization*只会匹配文件名中包含Localization字符串的文件,而En.json这类文件的文件名里没有Localization,只是存放在名为Localization的目录下,所以无法被匹配到。

要同时覆盖两种目标文件,需要分两步处理后合并结果:

  1. 搜索所有名为Localization.json的文件
  2. 搜索所有位于Localization目录下的.json文件

具体代码实现

// 1. 获取所有直接命名为 Localization.json 的文件
var localizationJsonFiles = Directory.GetFiles("/Projects", "Localization.json", SearchOption.AllDirectories);

// 2. 获取所有名为 Localization 的目录,再遍历这些目录获取里面的 json 文件
var localizationDirs = Directory.GetDirectories("/Projects", "Localization", SearchOption.AllDirectories);
var dirJsonFiles = new List<string>();
foreach (var dir in localizationDirs)
{
    // 只取当前 Localization 目录下的 json 文件,如需包含子目录可改为 SearchOption.AllDirectories
    dirJsonFiles.AddRange(Directory.GetFiles(dir, "*.json", SearchOption.TopDirectoryOnly));
}

// 合并两个结果集并去重(避免 Localization 目录下存在 Localization.json 时重复)
var allTargetFiles = localizationJsonFiles.Union(dirJsonFiles).ToList();

代码说明

  • 第一步用精确的文件名匹配Localization.json,确保所有符合命名规则的文件被找到
  • 第二步先定位所有Localization目录,再在这些目录内搜索所有.json文件,覆盖目录下的多语言json文件
  • 最后用Union合并结果并自动去重,避免重复获取同一文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:10:13