これは、他の多くの同様の質問と重複しています。拡張ファイル情報を取得する場合は、Directory および File クラスの代わりに、DirectoryInfo、FileInfo などの XxxInfo クラスを使用します。
さらに、すべての GetXXX または EnumerateXXX メソッドには、最上位ディレクトリのファイルだけでなく、すべてのファイルを返すことができる SearchOption パラメーターを使用したオーバーロードがあります。
特定の質問については、たとえばGetFilesを使用してディレクトリの下のすべてのファイルに関する情報を取得するには:
var di=new DirectoryInfo(somePath);
var allFiles=di.GetFiles("*",SearchOption.AllDirectories);
foreach(var file in allFiles)
{
Console.WriteLine("{0} {1}",file.Name,file.Length);
}
GetFiles とEnumerateFilesの違いは、GetFiles は、ディレクトリの下にあるすべてのファイルを取得した後にのみ返されるため、時間がかかる可能性があることです。EnumerateFiles は反復子を返すので、foreach ステートメントで使用して一度に各ファイルを処理し、必要に応じてループを抜けて反復を停止できます。