vb.net または C# で、すべてのファイル (例: 1000000) をスキャンしてすべてを取得する代わりに、フォルダから特定の数のファイル (例: 100) を取得することは可能ですか?
はいの場合、実装は何ですか?
どうもありがとう
.Net Framework 4.0 以降では、DirectoryInfo.EnumerateFilesを使用して、必要な数のファイルを取得できます。このメソッドは、戻る前にディレクトリのフル スキャンを必要としません。
バージョン 4 より前のバージョンの .NET Framework で動作するソリューションが必要なので、念頭に置いているのは WinAPIのFindFirstFile関数とFindNextFile関数だけです。
EnumerateFiles
これらの WinAPI 関数に基づくのこの実装を見てください。
foreach (var file in new DirectoryInfo("c:/mydirectory").EnumerateFiles())
{
//do stuff
}
最初にGetFilesメソッドを呼び出して、ディレクトリに関連するすべてのファイルのパスを取得し (ファイルはまだ読み取られていません)、コレクションから最初の 100 個のファイルを (たとえば、StreamReader などを使用して) 読み取る必要があると思います。
これは、フレームワークが 4 未満の場合に機能します。