遍历根目录并获取其中的所有文件?
答
如果您只需一次列出所有内容,则可以对包含该选项的GetFiles使用重载。
string[] filePaths = Directory.GetFiles(@"c:\MyDir\", "*.*", SearchOption.AllDirectories);
显然,在一个Web应用程序,你就不太可能有机会获得“C:\ MYDIR”,这样你就可以用可变拿着MapPath的呼叫,像这样的结果取代:
var rootDir = Server.MapPath("~/App_Data");
答
使用Directory.EnumerateFiles(String, String, SearchOption)功能与SearchOption.AllDirectories
:
foreach (var file in Directory.EnumerateFiles(@"c:\", "*.txt", SearchOption.AllDirectories))
{
// Do stuff here
}
EnumerateFiles方法比GetFiles的方法方式更快,因为它实际上只是返回普查员和不实际访问文件,直到它们是红色的。
答
您可以使用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);
}
}
数字在框架中会有些东西会为你做。这只会返回完整的路径。如果您想获得表示文件属性的对象,则需要额外的工作。 – NerdFury 2011-05-18 13:49:07