在文件夹中找到一个具有特定扩展名的文件

问题描述:

给定一个文件夹路径(如C:\ Random Folder),如何在其中找到包含特定扩展名的文件(如txt)?我假设我必须在目录中搜索* .txt,但我不确定我是如何开始搜索的。在文件夹中找到一个具有特定扩展名的文件

看看System.IO.Directory类和静态方法GetFiles。它有一个接受路径和搜索模式的重载。例如:

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

谢谢!所有的答案都很好,但是你先回答了这个问题......是的:) – DMan 2010-06-30 18:37:34

+4

如果扩展名会像txt_一样,这不起作用。我试图确定文件夹中是否有* .exe文件,并且我只有一个* .exe_文件,但查询返回它,这是不正确的。 – Adrian 2013-01-25 11:20:59

+1

该文档:https://msdn.microsoft.com/en-us/library/8he88b63(v=vs.110).aspx – 2015-02-24 12:51:26

您可以使用Directory

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

如果扩展名应该像txt_或其他名称所述文档https://msdn.microsoft.com/en-us/library/wz42302f(v=vs.110).aspx – 2015-02-24 12:50:26

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

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

+0

感谢您为此付出的所有额外工作。但是,我只是想要一个简单的声明,因为我在目录中只有一个文本文件(它是由我的程序提取的)。 – DMan 2010-06-30 18:29:41

下方回报的方法只有用特定扩展名的文件(例如:文件,以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类这需要文件路径作为参数,并验证该extension.To获取文件路径,只是有一个循环的条件,将获取一个单独的文件,并返回一个可用于验证的文件路径。

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

注意:两个逻辑都必须在循环条件之内。

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

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