Réduire au minimum les accès au disque lors de l'obtention des attributs de fichiers dans un répertoire
-
20-09-2019 - |
Question
Comme le titre l'indique, je suis à la recherche d'un moyen d'obtenir les attributs d'un grand nombre de fichiers dans un répertoire, mais sans y ajouter le coût d'un accès disque supplémentaire pour chaque fichier.
Par exemple, si je reçois l'attribut Nom des objets FileInfo dans une collection, alors il n'y a pas d'accès disque supplémentaire. Toutefois, si je reçois le LastWriteTimeUtc, puis un accès disque supplémentaire est fait.
Mon code:
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!!!
}
Quelqu'un sait-il d'une manière que je peux obtenir cette information dans un aller-retour? J'aurais espéré que DirectoryInfo.GetFiles () le fait, mais pas de chance.
Merci d'avance.
La solution 2
Alors, cela se produit par la conception. Le LastWriteTimeUtc est paresseux chargé. Donc, rien à faire d'autre écrire mon propre composant.
Autres conseils
Si vous vraiment se soucient de cela, vous devriez probablement écrire ceci dans C en utilisant FindFirstFile / GetFileTime, etc.