Минимизация доступа к диску при получении атрибутов файлов в каталоге
-
20-09-2019 - |
Вопрос
Как следует из названия, я ищу способ получить атрибуты большого количества файлов в каталоге, но без добавления стоимости дополнительного доступа к диску для каждого файла.
Например, если я получаю атрибут 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
Итак, это происходит намеренно.LastWriteTimeUtc загружается отложенно.Так что нечего делать, кроме написания собственного компонента.
Другие советы
Если вы Действительно заботитесь об этом, вам, вероятно, следует написать это на C, используя FindFirstFile/GetFileTime и т. д.