Minimizar os acessos ao disco ao obter atributos de arquivos em um diretório
-
20-09-2019 - |
Pergunta
Como o título sugere, estou procurando uma maneira de obter atributos de um grande número de arquivos em um diretório, mas sem adicionar o custo de um acesso adicional ao disco para cada arquivo.
Por exemplo, se eu receber o atributo de nome dos objetos FileInfo em uma coleção, não haverá acesso adicional ao disco. No entanto, se eu receber o último dia, é feito um acesso adicional ao disco.
Meu código:
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!!!
}
Alguém sabe de uma maneira de obter essas informações em uma viagem de ida e volta? Eu esperava que o diretórioInfo.getFiles () faça isso, mas não há sorte.
Desde já, obrigado.
Solução 2
Então, isso acontece por design. O último tempo é carregado preguiçoso. Portanto, nada para fazer outro escreve meu próprio componente.
Outras dicas
Se você verdade Preocupa -se com isso, você provavelmente deve escrever isso em C usando o FindFirstFile/GetFileTime, etc.