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

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

  •  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 и т. д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top