ディレクトリ内のファイルの属性を取得するときに、ディスクアクセスを最小限に抑えます

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

  •  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でこれを書く必要があります。

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