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

Posted

技术标签:

【中文标题】在文件夹中查找具有特定扩展名的文件【英文标题】:Find a file with a certain extension in folder 【发布时间】:2011-03-10 07:00:09 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

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

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

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

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

【讨论】:

【参考方案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));
    

【讨论】:

【参考方案4】:

其实很简单。您可以将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));

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

【讨论】:

感谢您为此付出的所有额外工作。但是,我只是要一个简单的语句,因为我的目录中只有一个文本文件(它是由我的程序提取的)。【参考方案5】:

您可以使用Directory 类

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

【讨论】:

如果扩展名类似于 txt_ 或文档msdn.microsoft.com/en-us/library/wz42302f(v=vs.110).aspx中所述的任何其他内容,则此方法无效 @RandallFlagg,我阅读了文档,不同意。有特殊情况,8.3 命名、长文件名等。应该找到 *.txt 和 *.txt_。查看他们谈论 8.3 和 xls 和 xlsx 扩展的文档【参考方案6】:

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

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

【讨论】:

谢谢!所有的答案都很好,但你先回答了所以......是的:) 如果扩展名类似于 txt_,这将不起作用。我正在尝试确定一个文件夹中是否有任何 *.exe 文件,而我只有一个 *.exe_ 文件,但查询返回它,这是不正确的。 文档:msdn.microsoft.com/en-us/library/8he88b63(v=vs.110).aspx 如果我想要一个名为 macos.txt 的文件怎么办 我想找到所有没有任何扩展名的文件。我有一些文件类型为“file”(无扩展名)的文件,如何找到这些文件?

以上是关于在文件夹中查找具有特定扩展名的文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在Python中的目录中查找具有特定文件扩展名的所有文件

在 Unix 中查找所有具有特定扩展名的文件?

如何从数组中查找具有特定扩展名的文件列表

python 查找具有特定扩展名的目录中的所有文件

查找具有特定名称和任何扩展名的文件

搜索包含列表中的单词并具有特定文件扩展名的文件名