Минимизация доступа к диску при получении атрибутов файлов в каталоге - PullRequest
0 голосов
/ 21 декабря 2009

Как следует из названия, я ищу способ получить атрибуты большого количества файлов в каталоге, но без добавления стоимости дополнительного доступа к диску для каждого файла.

Например, если я получу атрибут Name объектов FileInfo в коллекции, то никакого дополнительного доступа к диску не будет. Однако если я получу 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!!!
}

Кто-нибудь знает, как я могу получить эту информацию за один тур? Я бы надеялся, что DirectoryInfo.GetFiles () сделает это, но не повезло.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 30 марта 2011

Итак, это происходит по замыслу. LastWriteTimeUtc загружен ленивым. Так что нечего делать, напиши свой собственный компонент.

0 голосов
/ 21 декабря 2009

Если вы действительно заботитесь об этом, вам, вероятно, следует написать это на C, используя FindFirstFile / GetFileTime и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...