喜 我正在创建一个应用程序,我想知道该文件夹下的每个文件.i.e。我如何遍历根目录并让列表中的每个文件访问一次。
答案 0 :(得分:5)
如果您只需要一次列出所有内容,您可以使用包含该选项的GetFiles的重载。
string[] filePaths = Directory.GetFiles(@"c:\MyDir\", "*.*", SearchOption.AllDirectories);
显然,在Web应用程序中,您可能无法访问“c:\ MyDir”,因此您可以将其替换为包含MapPath调用结果的变量,如下所示:
var rootDir = Server.MapPath("~/App_Data");
答案 1 :(得分:3)
将Directory.EnumerateFiles(String, String, SearchOption)功能与SearchOption.AllDirectories
:
foreach (var file in Directory.EnumerateFiles(@"c:\", "*.txt", SearchOption.AllDirectories))
{
// Do stuff here
}
EnumerateFiles方法比GetFiles方法快,因为它实际上只返回枚举器,并且在它们为红色之前实际上不会访问这些文件。
答案 2 :(得分:0)
您可以使用DirectoryInfo和FileInfo类以及递归函数。
void Main()
{
DirectoryInfo info = new DirectoryInfo(@"C:\Personal");
ListContents(info);
}
public void ListContents(DirectoryInfo info)
{
foreach(var dir in info.GetDirectories())
{
ListContents(dir);
}
foreach(var file in info.GetFiles())
{
Console.WriteLine(file.FullName);
}
}