0

タイトルが示すように、ディレクトリ内の多数のファイルの属性を取得する方法を探していますが、ファイルごとに追加のディスクアクセスのコストを追加する必要はありません。

たとえば、コレクション内の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()がこれを実行することを期待していましたが、運がありませんでした。

前もって感謝します。

4

2 に答える 2

0

したがって、これは設計上発生します。LastWriteTimeUtcは遅延ロードされます。したがって、他に何もすることなく、自分のコンポーネントを作成します。

于 2011-03-30T15:33:20.780 に答える
0

これを本当に気にする場合は、FindFirstFile/GetFileTimeなどを使用してCでこれを記述する必要があります。

于 2009-12-21T19:49:45.553 に答える