0

ディレクトリを参照して、サイズ、名前、および URL を含むすべてのファイルを取得したいと思います。私はこれが好きでした:

 int i = 0;
                 foreach (string sFileName in Directory.GetFiles(Path.Combine(@"C:\Projets", path2)))
                 {
                     i++;
                 }

ディレクトリ内のファイルの数を数えますが、その中に他のディレクトリがある場合の問題です。すべてのファイルとその特性を取得するにはどうすればよいですか?

4

2 に答える 2

1

これは、他の多くの同様の質問と重複しています。拡張ファイル情報を取得する場合は、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 ステートメントで使用して一度に各ファイルを処理し、必要に応じてループを抜けて反復を停止できます。

于 2013-05-30T12:35:13.350 に答える
0

これは、すべてのファイルを再帰的にループする必要があります

foreach (string sFileName in Directory.EnumerateFiles(Path.Combine(@"C:\Projets", path2), "*.*", SearchOption.AllDirectories))
        {
            //Get file information here
            FileInfo f = new FileInfo(sFileName);
            Console.WriteLine("{0} - {1}", f.Length, f.Name);
        }
于 2013-05-30T12:33:41.913 に答える