在文件夹中查找具有特定扩展名的文件

给定一个文件夹path(如C:\随机文件夹),我怎么能find一个文件,其中包含一个特定的扩展名,如TXT? 我假设我将不得不在目录中search* .txt,但我不确定我是如何开始search的。

查看System.IO.Directory类和静态方法GetFiles 。 它有一个接受path和search模式的重载。 例:

  string[] files = System.IO.Directory.GetFiles(path, "*.txt"); 

你可以使用Directory类

  Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories) 

实际上这很容易。 您可以将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)); 

当然,这种技术也有许多变化。 如果您的filter更简单,其他一些答案更简单。 这个优点是枚举延迟(如果有的话)和更多的代码更灵活的过滤。

下面的方法只返回具有一定扩展名的文件(例如:带有.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)); } 

根据我的理解,这可以通过两种方式来完成:

1)你可以使用带有Getfiles方法的Directory Class,遍历所有文件来检查我们需要的扩展名。

Directory.GetFiles( “your_folder_path)[I]。载(” *。TXT“)

2)可以使用带有GetExtension方法的Path类,它以文件path为参数并validation扩展名。要获得文件path,只需要一个循环条件,即获取单个文件并返回可用于validation的文件path。

Path.GetExtension(your_file_path).Equals( “JSON”)

注意:逻辑必须在循环条件内。

使用此代码读取所有types的扩展名文件。

 string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");