C#指定文件夹路径查找特定扩展名文件并获取文件名
无需遍历筛选指定扩展名文件的解决方案
你可以利用DirectoryInfo类的重载方法或LINQ查询来直接获取目标文件,避免手动遍历所有文件:
方法1:使用GetFiles的搜索模式重载
直接通过搜索模式过滤扩展名,返回的结果已经是符合要求的文件,不需要额外遍历:
var directory = new DirectoryInfo(FolderPath); // 传入"*.pdf"作为搜索模式,只返回PDF文件 FileInfo[] pdfFiles = directory.GetFiles("*.pdf"); if (pdfFiles.Length > 0) { // 获取第一个匹配文件的无扩展名文件名 string targetFileName = Path.GetFileNameWithoutExtension(pdfFiles[0].Name); // 后续可对文件名进行操作 }
如果需要忽略大小写匹配(比如同时匹配.PDF、.pdf),可以使用带搜索选项的重载:
FileInfo[] pdfFiles = directory.GetFiles("*.pdf", SearchOption.TopDirectoryOnly);
方法2:使用LINQ延迟查询(高效找首个匹配项)
如果只需要找到第一个符合条件的文件,用EnumerateFiles配合LINQ的FirstOrDefault更高效,因为它会在找到第一个匹配项后立即停止,无需加载所有文件到内存:
var directory = new DirectoryInfo(FolderPath); var targetFile = directory.EnumerateFiles() .FirstOrDefault(f => f.Extension.Equals(".pdf", StringComparison.OrdinalIgnoreCase)); if (targetFile != null) { string targetFileName = Path.GetFileNameWithoutExtension(targetFile.Name); }
获取所有匹配的文件名
如果需要收集所有指定扩展名文件的无扩展名名称,可以用:
var directory = new DirectoryInfo(FolderPath); var allTargetFileNames = directory.GetFiles("*.pdf") .Select(file => Path.GetFileNameWithoutExtension(file.Name)) .ToList();
内容的提问来源于stack exchange,提问作者priyanka manogaran
相关产品推荐
相关产品推荐

