11

ファイルが多すぎるフォルダがあり、各ファイルを1つずつ確認したいと思います。問題は、Directory.GetFilesが完成した配列を返すことであり、これには時間がかかりすぎます。

むしろ、フォルダーを指すオブジェクトを作成してから、フォルダー内の次のファイルを返す関数を呼び出します。.NETにはこのようなクラスがありますか?

(Monoでもこれを使用する予定なので、win32相互運用機能は避けたいと思います。)

どうもありがとう。

4

2 に答える 2

8

このブログ投稿によると、.NET 3.5ではこれを行うことはできませんが、.NET4.0では行うことができます。

DirectoryInfo directory = new DirectoryInfo(@"\\share\symbols");
IEnumerable<FileInfo> files = directory.EnumerateFiles();
foreach (var file in files) {
    Console.WriteLine("Name={0}, Length={1}", file.Name, file.Length);
}

(同様に、静的Directory.EnumerateFilesメソッドがあります。)

そのAPIがMonoに移植されているかどうかはまだわかりません。

于 2010-02-19T10:13:01.020 に答える
1

CodeProjectWebサイトのFastDirectoryEnumeratorプロジェクトを見てください。

それはあなたが必要としていることを正確に実行し、さらに多くのファイルを含む低速のネットワーク共有で正常に使用することができ、パフォーマンスは素晴らしかったです。

欠点-相互運用機能を使用しているため、Monoに移植できない場合があります。

于 2010-02-26T06:14:02.590 に答える