C#新手问询:如何利用过滤列表遍历文件并检查扩展名?
解决方案:用过滤列表检查文件扩展名
嘿,作为C#新手你已经完成了最关键的一步——把配置里的扩展名整理成了干净的小写列表!接下来只需要借助.NET自带的路径工具类,就能轻松完成扩展名检查啦,给你两种实用的方式:
基础实现:直接用List.Contains
我们可以用Path.GetExtension()方法准确获取文件的扩展名(它会自动处理文件名里有多个点的情况,比如"pic.version1.jpg"会正确返回".jpg"),然后转成小写后和你的_FilterList对比:
foreach (var f in files) { // 获取文件扩展名并转小写,和你的过滤列表格式保持一致 string fileExt = Path.GetExtension(f.Name).ToLower(); // 检查当前扩展名是否在过滤列表中 if (_FilterList.Contains(fileExt)) { // 这里写符合条件的文件的处理逻辑 // 比如:Console.WriteLine($"匹配到的图片:{f.Name}"); } }
优化性能:用HashSet替代List
如果你的过滤列表很长,或者要处理大量文件,把List<string>转成HashSet<string>会让Contains()方法的查询速度快很多(HashSet的查询时间复杂度是O(1),List是O(n)):
// 提前把List转成HashSet,只需要做一次 HashSet<string> filterSet = new HashSet<string>(_FilterList); foreach (var f in files) { string fileExt = Path.GetExtension(f.Name).ToLower(); if (filterSet.Contains(fileExt)) { // 处理符合条件的文件 } }
额外小提示
如果你的files集合是FileInfo类型的(比如用DirectoryInfo.GetFiles()获取的),还可以直接用f.Extension来获取扩展名,代码会更简洁:
string fileExt = f.Extension.ToLower();
这样就完美实现了用配置里的扩展名列表过滤图片的需求啦!
内容的提问来源于stack exchange,提问作者user1591668
相关产品推荐
相关产品推荐

