当前位置: 首页 > 编程语言 > C#

与GetFiles()匹配的精确文件扩展名?分享

时间:2023-04-10 19:05:07 C#

与GetFiles()完全匹配的文件扩展名?我想检索扩展名与指定字符串完全匹配的文件列表。DirectoryInfodi=newDirectoryInfo(someValidPath);列出myFiles=newList();foreach(FileInfofiindi.GetFiles("*.txt")){myFiles.Add(fi);我得到的扩展名为*.txt,但我也得到了扩展名为*.txtx的文件,所以我编写的代码等同于得到扩展名以txt开头的文件。这不是我想要的。我是否需要获取所有文件名并将正则表达式与“\.txt$”匹配(我认为),或者使用.EndsWith(".txt")等测试每个文件名字符串来执行此操作?谢谢!某种解决方法,但您可以使用Where扩展方法来过滤掉完全匹配项:foreach(FileInfofiindi.GetFiles("*.txt").Where(fi=>string.Compare(".txt",fi.Extension,StringComparison.OrdinalIgnoreCase)==0)){myFiles.Add(fi);请注意,这将使扩展不区分大小写。使用列表的AddRange函数而不是执行foreach循环,并为下面的表达式返回的每个项目调用Add(我将其保存到变量列表中)。varlist=di.GetFiles("*.txt").Where(f=>f.Extension==".txt");myFiles.AddRange(列表);我假设您刚刚向我们展示了您的代码片段,myFiles已经有了它的价值,如果没有,您可以这样做。列出myFiles=di.GetFiles("*.txt").Where(f=>f.Extension==".txt").ToList();正则表达式可能矫枉过正。在FileInfo上使用扩展名。foreach(FileInfofiindi.GetFiles("*.txt").Where(f=>f.Extension==".txt")){myFiles.Add(fi);试试这个:DirectoryInfodi=newDirectoryInfo(someValidPath);ListmyFiles=(fromfileindi.GetFiles("*.txt")wherefile.Extension==".txt"选择文件).ToList();DirectoryInfodi=newDirectoryInfo(someValidPath);列出myFiles=newList();foreach(FileInfofiindi.GetFiles("*.txt")){if(fi.Extension==".txt")myFiles.Add(fi);你不能只添加一个if并检查文件名的最后四个字符吗?如果使用C#2.0不是更容易吗?字符串fileExtensionFilter="*.txt";DirectoryInfodi=newDirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));列出myFiles=newList();foreach(FileInfofiindi.GetFiles(fileExtensionFilter)){if(fi.Extension==fileExtensionFilter.Substring(1))myFiles.Add(fi);我有一个用户提供的模式,所以许多其他答案对我不起作用。我最终得到了这个更通用的解决方案:以上是C#学习教程:ExactfileextensionmatchingwithGetFiles()?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——publicstring[]GetFiles(stringpath,stringpattern){boollastWildIsHook=false;if(pattern.EndsWith("?")){pattern=pattern.Substring(0,pattern.Length-1);lastWildIsHook=真;}varlastWildIndex=Math.Max(pattern.LastIndexOf("*"),pattern.LastIndexOf("?"));varendsWith=pattern.Length>lastWildIndex?pattern.Substring(lastWildIndex+1):模式;如果(!lastWildIsHook)返回Directory.GetFiles(路径,模式)。在哪里(p=>p.EndsWith(endsWith))。ToArray();否则返回Directory.GetFiles(path,pattern).Where(p=>p.EndsWith(endsWith)||p.Substring(0,p.Length-1).EndsWith(endsWith)).ToArray();}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: