101

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

4

6 回答 6

201

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

 string[] files = System.IO.Directory.GetFiles(path, "*.txt");
于 2010-06-30T18:21:50.267 回答
38

您可以使用Directory

 Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories)
于 2010-06-30T18:22:04.420 回答
14

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

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

于 2010-06-30T18:24:28.503 回答
2

下面的方法只返回具有特定扩展名的文件(例如:带有.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));
    }
于 2016-12-30T02:41:58.067 回答
1

据我了解,这可以通过两种方式完成:

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

Directory.GetFiles("your_folder_path)[i].Contains("*.txt")

2)您可以使用带有GetExtension方法的Path Class,它以文件路径为参数并验证扩展名。要获取文件路径,只需一个循环条件,将获取单个文件并返回可用于验证的文件路径。

Path.GetExtension(your_file_path).Equals(".json")

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

于 2017-03-24T10:22:24.800 回答
0

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

string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");
于 2017-04-07T11:52:44.673 回答