📅  最后修改于: 2023-12-03 15:00:25.074000             🧑  作者: Mango
本文介绍如何使用 C# 中的 System.IO.Directory
类的 GetFiles()
方法获取指定目录下所有的 DLL 文件信息,并使用 LINQ 将文件路径转换为 System.IO.FileInfo
实例,并最终排序输出。
System.IO.Directory
类的 GetFiles()
方法可以返回指定目录中符合指定搜索模式的文件的全路径数组。方法签名如下:
public static string[] GetFiles(string path, string searchPattern);
其中 path
参数是指要搜索的目录的路径,searchPattern
参数可以是包含通配符的字符串(如 *.dll
)。
例如,在 Windows 系统中,以下代码可以返回 C 盘根目录下所有的 DLL 文件路径:
string[] dllPaths = Directory.GetFiles(@"C:\", "*.dll");
System.IO.FileInfo
类表示文件的属性、构成和操作,其中包含了文件名称、扩展名、大小、读写属性等信息。通过 new FileInfo(filename)
构造函数可以将文件路径转换为 FileInfo
实例。
例如,以下代码将搜索得到的 dllPaths
数组内的所有文件路径都转换为 FileInfo
实例,将转换后的实例存储在 dllFiles
集合中:
IEnumerable<FileInfo> dllFiles =
Directory.GetFiles(@"C:\Windows\System32\", "*.dll")
.Select(path => new FileInfo(path));
按照 FileInfo
实例的某一成员变量来排序文件信息可以使用 OrderBy()
方法,例如,以下代码将按照文件名对 dllFiles
集合中的所有文件信息进行排序:
IEnumerable<FileInfo> sortedFiles =
dllFiles.OrderBy(f => f.Name);
下面的代码是一个完整的示例,将搜索得到的文件信息转换为 FileInfo
实例,并按文件名来排序输出:
string folder = @"C:\Windows\System32\";
IEnumerable<FileInfo> sortedDllFiles =
Directory.GetFiles(folder, "*.dll")
.Select(fn => new FileInfo(fn))
.OrderBy(f => f.Name);
foreach (var file in sortedDllFiles)
{
Console.WriteLine($"{file.Name}: {file.Length} bytes");
}
以上代码将输出 C:\Windows\System32\
目录下所有 DLL 文件的文件名和文件大小。
在本文中,我们介绍了如何使用 System.IO.Directory
类的 GetFiles()
方法搜索指定目录下的 DLL 文件,并使用 LINQ Select
和 OrderBy
方法将文件路径转换为 FileInfo
实例,并按文件名排序输出。这对于对 DLL 文件感兴趣的开发人员非常有用。