Directory.GetFiles が一度に 1 つのファイルを返すようにしますか?(。ネット)
質問
フォルダ内にファイルが多すぎるため、各ファイルを 1 つずつ調べたいと考えています。問題は、Directory.GetFiles が完全な配列を返すのに時間がかかりすぎることです。
むしろ、フォルダーを指すオブジェクトを用意し、フォルダー内の次のファイルを返す関数を呼び出したいと考えています。.NET にはこのようなクラスはありますか?
(Win32 相互運用機能は Mono でも使用するつもりなので、避けたいと思っています。)
どうもありがとう。
解決
.NET 3.5 ではこれを行うことはできませんが、.NET 4.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 に移植されているかどうかはわかりません。
他のヒント
CodeProjectのウェブ上で FastDirectoryEnumerator のプロジェクトを見てみましょうサイトます。
それはあなたが必要な正確に何を行い、さらに、私は成功したファイルや性能の多くと低速のネットワーク共有にそれを使用することができただけで素晴らしかった。
欠点 - それはモノラルにポータブルではないかもしれないので、それは相互運用使用
所属していません StackOverflow