如何过滤出特定扩展名的文件
在C#中,DirectoryInfo
类的GetFiles
方法本身并不直接支持通过参数来过滤多种类型的文件。不过,你可以通过组合多个过滤条件来实现这一功能。例如,你可以首先获取所有文件,然后使用 LINQ(Language Integrated Query)来过滤出你需要的文件类型。
以下是一个示例,展示了如何过滤出特定扩展名的文件(例如 .txt
和 .csv
文件):
csharp复制代码
using System; | |
using System.IO; | |
using System.Linq; | |
class Program | |
{ | |
static void Main() | |
{ | |
// 指定要搜索的目录 | |
string directoryPath = @"C:\YourDirectoryPath"; | |
// 创建 DirectoryInfo 对象 | |
DirectoryInfo directoryInfo = new DirectoryInfo(directoryPath); | |
// 获取目录中所有文件的信息 | |
FileInfo[] allFiles = directoryInfo.GetFiles("*.*"); // 获取所有文件 | |
// 使用 LINQ 过滤出 .txt 和 .csv 文件 | |
var filteredFiles = allFiles.Where(file => file.Extension == ".txt" || file.Extension == ".csv").ToArray(); | |
// 输出过滤后的文件路径 | |
foreach (var file in filteredFiles) | |
{ | |
Console.WriteLine(file.FullName); | |
} | |
} | |
} |
在这个示例中,我们首先使用 GetFiles("*.*")
获取目录中的所有文件,然后使用 LINQ 的 Where
方法过滤出扩展名为 .txt
或 .csv
的文件。
另一种方法是直接使用 Directory.EnumerateFiles
方法,它支持搜索模式,并且比 GetFiles
更加高效,特别是当处理大量文件时。你可以使用多个搜索模式,然后将结果合并:
csharp复制代码
using System; | |
using System.Collections.Generic; | |
using System.IO; | |
using System.Linq; | |
class Program | |
{ | |
static void Main() | |
{ | |
// 指定要搜索的目录 | |
string directoryPath = @"C:\YourDirectoryPath"; | |
// 定义要过滤的文件扩展名 | |
string[] extensions = { "*.txt", "*.csv" }; | |
// 使用 Directory.EnumerateFiles 获取每个扩展名的文件 | |
IEnumerable<string> allFiles = extensions.SelectMany(ext => Directory.EnumerateFiles(directoryPath, ext)); | |
// 输出过滤后的文件路径 | |
foreach (var file in allFiles) | |
{ | |
Console.WriteLine(file); | |
} | |
} | |
} |
在这个示例中,我们使用 Directory.EnumerateFiles
方法结合多个搜索模式,并通过 SelectMany
将结果合并成一个集合。这种方法通常比先获取所有文件再过滤更高效,因为它避免了不必要的文件枚举。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2022-11-02 HTTP 协议的 8 种请求类型介绍
2021-11-02 史上最详细的ORACLE19c安装说明