Directory.GetFiles が一度に 1 つのファイルを返すようにしますか?(。ネット)

StackOverflow https://stackoverflow.com/questions/2295431

  •  21-09-2019
  •  | 
  •  

質問

フォルダ内にファイルが多すぎるため、各ファイルを 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 のプロジェクトを見てみましょうサイトます。

それはあなたが必要な正確に何を行い、さらに、私は成功したファイルや性能の多くと低速のネットワーク共有にそれを使用することができただけで素晴らしかった。

欠点 - それはモノラルにポータブルではないかもしれないので、それは相互運用使用

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top