📅  最后修改于: 2023-12-03 15:13:51.638000             🧑  作者: Mango
在程序中,我们有时需要遍历系统中的某个目录下的所有文件,可以使用 C# 中提供的 DirectoryInfo 和 FileInfo 类来实现目录遍历的操作。
DirectoryInfo 类提供了许多有用的方法和属性,可以帮助我们处理目录和其下的文件信息。下面是一个简单的例子,展示如何使用 DirectoryInfo 类遍历指定目录下的所有文件。
using System.IO;
using System.Collections.Generic;
public class DirectoryTraversal
{
public static IEnumerable<string> TraverseDirectory(string path)
{
DirectoryInfo directory = new DirectoryInfo(path);
// 遍历目录中的文件
foreach (var file in directory.GetFiles())
{
yield return file.FullName;
}
// 遍历目录中的子目录
foreach (var subdirectory in directory.GetDirectories())
{
foreach (var file in TraverseDirectory(subdirectory.FullName))
{
yield return file;
}
}
}
}
在上面的代码中,我们定义了一个名为 TraverseDirectory 的静态方法,该方法接收一个字符串参数 path,代表要遍历的目录路径。TraverseDirectory 方法返回一个 IEnumerable
在 TraverseDirectory 方法中,我们首先创建了一个 DirectoryInfo 对象,该对象代表了指定路径的目录。然后,我们使用 GetFiles 方法获取该目录下的所有文件,并使用 yield return 语句逐个返回每个文件的完整路径。接着,我们使用 GetDirectories 方法获取该目录下的所有子目录,并对每个子目录调用 TraverseDirectory 方法进行递归遍历。对于每个遍历到的文件,我们同样使用 yield return 语句返回其完整路径。
FileInfo 类提供了许多有用的方法和属性,可以帮助我们获取文件的详细信息。下面是一个简单的例子,展示如何使用 FileInfo 类遍历指定目录下的所有文件。
using System.IO;
using System.Collections.Generic;
public class DirectoryTraversal
{
public static IEnumerable<string> TraverseDirectory(string path)
{
DirectoryInfo directory = new DirectoryInfo(path);
// 遍历目录中的文件
foreach (var file in directory.GetFiles())
{
yield return file.FullName;
}
// 遍历目录中的子目录
foreach (var subdirectory in directory.GetDirectories())
{
foreach (var file in TraverseDirectory(subdirectory.FullName))
{
yield return file;
}
}
}
public static IEnumerable<FileInfo> GetFileInfo(string path)
{
foreach (var filePath in TraverseDirectory(path))
{
yield return new FileInfo(filePath);
}
}
}
在上面的代码中,我们新增了一个名为 GetFileInfo 的静态方法,该方法接收一个字符串参数 path,代表要遍历的目录路径。GetFileInfo 方法返回一个 IEnumerable
在 GetFileInfo 方法中,我们首先调用 TraverseDirectory 方法获取指定目录下的所有文件的完整路径,并使用 foreach 循环语句逐个处理。对于每个遍历到的文件,我们使用 new FileInfo(filePath) 创建一个新的 FileInfo 对象,并使用 yield return 语句返回这个对象。这样,我们就可以获取到每个文件的详细信息,例如文件大小、创建时间、修改时间等。
通过使用 C# 中提供的 DirectoryInfo 和 FileInfo 类,我们可以方便地遍历系统中的某个目录下的所有文件,并获取每个文件的详细信息。这是编写文件读取、文件处理和搜索引擎等应用程序时非常有用的功能。