CSharp - 在文件夹中,C# 查找具有特定扩展名的文件

  显示原文与译文双语对照的内容
58 1

给定一个文件夹路径( 像 C:Random 文件夹),如何在它的中找到包含某个扩展名的文件,如 txt?我想我必须在目录中搜索 *.txt,但我不确定我是如何首先开始这个搜索的。

时间:原作者:0个回答

53 4

查看 System.IO.Directory 类和 static 方法 GetFiles它具有接受路径和搜索 Pattern的重载。例如:

 string[] files = System.IO.Directory.GetFiles(path,"*.txt");
原作者:
78 3

你可以使用目录

 Directory.GetFiles(path,"*.txt", SearchOption.AllDirectories)
原作者:
145 3

事实上,这很简单。你可以将 System.IO.Directory 类与 System.IO.Path 一起使用。类似于( 使用LINQ使它的更容易):

var allFilenames = Directory.EnumerateFiles(path).Select(p => Path.GetFileName(p));
//Get all filenames that have a. txt extension, excluding the extension
var candidates = allFilenames.Where(fn => Path.GetExtension(fn) ==".txt")
. Select(fn => Path.GetFileNameWithoutExtension(fn));

当然,这种技术也有很多变化。如果过滤器更简单一些,其他的答案就更简单了。这种方法具有延迟枚举( 如果有问题)的优点和更灵活的过滤,以牺牲更多代码。

原作者:
64 1

下面的方法只返回具有某些扩展名的文件( 例如:带有. txt 但不是txt1的文件

public static IEnumerable<string> GetFilesByExtension(string directoryPath, string extension, SearchOption searchOption)
 {
 return
 Directory.EnumerateFiles(directoryPath,"*" + extension, searchOption)
. Where(x => string.Equals(Path.GetExtension(x), extension, StringComparison.InvariantCultureIgnoreCase));
 }
原作者:
...