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


92

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

Answers:


177

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

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

谢谢!所有答案都很好,但是您首先回答了……是的:)
Dominic K 2010年

6
如果扩展名是txt_,则此方法不起作用。我试图确定文件夹中是否有任何* .exe文件,而我只有一个* .exe_文件,但是查询返回了它,这是不正确的。
阿德里安


如果我想要一个像这样的单个文件怎么办macos.txt
Prashant Pimpale'Oct

我想查找所有没有扩展名的文件。我有一些文件类型为“文件”(无扩展名)的文件,如何找到这些文件?
sohaiby


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));

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


感谢您为此付出的所有额外工作。但是,我只想声明一个简单的语句,因为目录中只有一个文本文件(该文件是由我的程序提取的)。
Dominic K 2010年

3

以下方法仅返回具有某些扩展名的文件(例如:具有.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

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

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

Directory.GetFiles(“ your_folder_path)[i]。包含(” * .txt“)

2)可以将路径类与GetExtension方法一起使用,该方法以文件路径作为参数并验证扩展名。要获取文件路径,只需具有循环条件即可获取单个文件并返回可用于验证的文件路径。

Path.GetExtension(your_file_path).Equals(“。json”)

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.