ディレクトリ内のファイルの属性を取得するときに、ディスクアクセスを最小限に抑えます
-
20-09-2019 - |
質問
タイトルが示すように、
、私は、しかし、各ファイルの追加ディスクアクセスのコストを追加することなく、ディレクトリ内のファイルの数が多いの属性を取得する方法を探しています。
私はコレクションでのFileInfoオブジェクトのName属性を取得する場合たとえば、その後、追加のディスクアクセスがありません。私はLastWriteTimeUtcを取得する場合は、追加のディスクアクセスが行われます。
私のコード:
DirectoryInfo di = new DirectoryInfo(myDir);
FileInfo[] allFiles = di.GetFiles("*.*", SearchOption.TopDirectoryOnly);
foreach (FileInfo fInfo in allFiles)
{
name = fInfo.Name //no additional disk access made
lastMod = fInfo.LastWriteTimeUtc //further disk access made!!!
}
誰もが、私は1回の往復で、この情報を得ることができる方法を知っていますか?私はDirectoryInfo.GetFiles()は、運が、これを行うことを期待しているだろう。
事前に感謝します。
解決 2
ですから、これは設計によって起こります。 LastWriteTimeUtcは遅延ロードされ。だから、他のを行うには何も私自身のコンポーネントを書きません。
他のヒント
は、をした場合、本当には、この気に、あなたはおそらくなどFindFirstFile / GetFileTimeを使用して、Cでこれを書く必要があります。
所属していません StackOverflow